Ответ 1
Перед использованием необходимо выполнить функцию ObjectId:
var ObjectId = require('mongodb').ObjectID;
Я использую MongoDb
(как часть MongoJS
) в Node
. Вот документация для MongoJS.
Я пытаюсь выполнить вызов в Node на основе поля ввода _id
. При использовании vanilla MongoDb
с консоли я могу:
db.products.find({"_id":ObjectId("51d151c6b918a71d170000c7")})
и он правильно возвращает мою запись. Однако, когда я делаю то же самое в Node, например:
db.products.find({"_id": ObjectId("51d151c6b918a71d170000c7")}, function (err, record) {
// Do stuff
});
Я получаю ReferenceError: ObjectId is not defined
.
Каков правильный протокол для этого?
Перед использованием необходимо выполнить функцию ObjectId:
var ObjectId = require('mongodb').ObjectID;
Если вы используете MongoJS, вы можете сделать:
var ObjectId = mongojs.ObjectId;
Затем
db.users.find({"_id": ObjectId(id)}, function(err, user){...}
если вы используете мангуст, вы можете попробовать следующее:
var mongoose = require('mongoose')
usersSchema = mongoose.model('users'),
mongoose.Types.ObjectId("<object_id>")
usersSchema.find({"_id": mongoose.Types.ObjectId("<object_id>")}, function (err, record) {
// Do stuff
});
Вы также можете деструктурировать ваш ObjectId и MongoClient, чтобы оптимизировать ваш код и сделать его более читабельным.
const { MongoClient, ObjectId } = require('mongodb');
Вот еще один способ использовать objectId при использовании mongoose.
// at the top of the file
const Mongoose = require('mongoose')
const ObjectId = Mongoose.Types.ObjectId;
// when using mongo to collect data
Mongoose.model('users', userSchema).findOne({ _id:
ObjectId('xyz') }, function (err, user) {
console.log(user)
return handle(req, res)
})
})