Запрос Mongoose для objectID не работает должным образом - PullRequest
0 голосов
/ 06 июля 2018

У меня есть модель 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):

Mongo Compass excerpt

Это путаница связана с Монго ObjectID с? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 06 июля 2018

Извините всех, я нашел ответ на свой вопрос: я сделал глупую ошибку.

В 3 других отрывках из коллекции projects (не той, что показана), username из User вставлялся каким-то другим кодом в поле user схемы Project, вместо этого из ObjectID. Это были 3 проекта, принадлежащие пользователю с именем пользователя example.

В результате ничего не было возвращено. Приносим извинения за доставленные неудобства.

...