Узел.Яш Мангуста.строка js для функции ObjectId

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

5 ответов


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

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');

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

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

EDIT: новый стандарт имеет fromHexString, а не fromString


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

mongoose.mongo.BSONPure.ObjectID.isValid

или

mongoose.Types.ObjectId.isValid

var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");

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

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);
}