Mongoose find возвращает пустой массив - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть документ mongoDB, который выглядит следующим образом:

{
    "_id": {
        "$oid": "5b99247efb6fc01dae438815"
    },
    "participants": [
        "5b758a8341ee61f049ded486",
        "5b94fb4ffb6fc01dae40eae3"
    ]
}

Схема документа в Mongoose определяется как таковая

var conversationSchema = new mongoose.Schema({
    participants: [{ type: mongoose.Schema.ObjectId, ref: 'User'}],
});

Я получаю данные как таковые

var ccc = Conversation.find({participants : "5b758a8341ee61f049ded486"});
ccc.exec(function(err, conversations){
   res.status(200).json(conversations);
});

Проблема в том, что я получаю ответ пустого массива [].

Я думаю, что проблема со Схемой, но я не могу понять, как я могу заставить это работать.

EDIT, Если я изменю свою схему на следующую, она будет работать:

var conversationSchema = new mongoose.Schema({
    participants: [{ type: String}],
});

Но я хочу работать с mongoose.Schema.ObjectId, а не Strings в качестве внешнего ключа.

1 Ответ

0 голосов
/ 14 сентября 2018

Попробуйте добавить типы в эту строку:

participants: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User'}]

Он не распознает элементы в массиве, потому что они являются строками, которые вы должны иметь вместо объекта, подобного {"$ oid": "585bb0086c57cd2265b1cbd3"}, поэтому заново вставьте элементы в вашу базу данных и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...