Строка Node.js Mongoose.js для функции ObjectId - PullRequest
139 голосов
/ 05 июля 2011

Есть ли функция для преобразования строки в objectId в узле с помощью mongoose? Схема указывает, что что-то является ObjectId, но когда оно сохраняется из строки, Монго говорит мне, что это все еще просто строка. Например, _id объекта отображается как objectId("blah").

Ответы [ 5 ]

341 голосов
/ 06 декабря 2011

Вы можете сделать это так:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
9 голосов
/ 07 ноября 2011

Вы можете сделать это так:

var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");

РЕДАКТИРОВАТЬ: новый стандарт имеет fromHexString, а не fromString

5 голосов
/ 04 августа 2015
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
5 голосов
/ 12 января 2015

Судя по комментариям, вы ищете:

mongoose.mongo.BSONPure.ObjectID.isValid

Или

mongoose.Types.ObjectId.isValid
4 голосов
/ 03 февраля 2017

Я не мог разрешить этот метод (по общему признанию, я не искал долго)

mongoose.mongo.BSONPure.ObjectID.fromHexString

Если ваша схема ожидает, что свойство имеет тип ObjectId, преобразование является неявным, по крайней мере, это похоже на случай в 4.7.8.

Однако вы можете использовать что-то вроде этого, что дает немного больше гибкости:

function toObjectId(ids) {

    if (ids.constructor === Array) {
        return ids.map(mongoose.Types.ObjectId);
    }

    return mongoose.Types.ObjectId(ids);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...