У меня есть модель Mongoose с именем Project
, и в ее схеме есть поле с именем user
с типом mongoose.Schema.Types.ObjectId
и ссылочным номером User
(имеется в виду модель User
).
Вот секция user
схемы Project
:
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true
}
Я хочу найти все проекты, которые имеют определенное «пользовательское» значение. Я знаю ObjectID пользователя, и в настоящее время я делаю следующее:
User.findOne({ username: "example" }, (err, projectUser) => {
if(err) throw err; // doesn't throw an error
console.log(projectUser); // logs the user object
console.log(projectUser._id); // logs 5b2949e8aac1521ca83d5750
console.log(typeof projectUser._id); // logs 'object'
Project.find({ user: projectUser._id}, (err, projects) => {
if(err) throw err; // also doesn't throw an error
console.log(JSON.stringify(projects, null, 4)); // logs '[]'
});
});
Как упоминалось в комментарии выше, запрос Project.find
возвращает пустой массив без ошибок. Я вручную подтвердил, что есть 3 проекта, принадлежащих пользователю 'example' , но ни один из них не появляется.
Вот пример документа в коллекции projects
, которым управляет модель Project
(как видно из Mongo Compass):
Это путаница связана с Монго ObjectID
с? Спасибо за вашу помощь.