Ответы:
Вы можете сделать это так:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Вы можете сделать это так:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
РЕДАКТИРОВАТЬ: новый стандарт имеет fromHexString, а не fromString
mongoose.mongo
для меня. Кто-нибудь может подтвердить?
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
mongoose.Types.ObjectId
и mongoose.mongo.ObjectId
? Свойства объекта mongoose различны, но они могут ссылаться на тот же метод внизу. Пожалуйста, прокомментируйте основные методы Types
против mongo
.
Я не мог решить этот метод (по общему признанию, я не искал долго)
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);
}
Просто посмотрите фрагмент кода ниже, если вы реализуете REST API через Express и Mongoose. (Пример для ADD)
....
exports.AddSomething = (req,res,next) =>{
const newSomething = new SomeEntity({
_id:new mongoose.Types.ObjectId(), //its very own ID
somethingName:req.body.somethingName,
theForeignKey: mongoose.Types.ObjectId(req.body.theForeignKey)// if you want to pass an object ID
})
}
...
Надеюсь, поможет