Відповіді:
Ви можете це зробити так:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Ви можете це зробити так:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
РЕДАКТУВАННЯ: Новий стандарт має замістьHideString, ніж відString
mongoose.mongo
для мене. Чи може хтось підтвердити?
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
mongoose.Types.ObjectId
та mongoose.mongo.ObjectId
? Властивості об'єкта мангуста різні, але вони можуть посилатися на той самий метод під ним. Прокоментуйте , що лежать в основі методів по 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);
}
Просто перегляньте фрагмент коду нижче, якщо ви реалізуєте API REST через експрес та мангуст. (Приклад для додавання)
....
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
})
}
...
Сподіваюся, що це допомагає