Заполните в мангусте возвращает массив _ids - PullRequest
0 голосов
/ 23 февраля 2019

Я создаю симуляцию для goodreads по стеку MERN, и когда я использую заполнение для извлечения книг определенного пользователя, он возвращает пустой массив, я провел большой поиск, но напрасно вот моя модель

const userSchema =new mongoose.Schema({
firstName:{
    type:"string",required:true
},
books:[{
    book:{type:mongoose.Schema.Types.ObjectId,ref:'Book'},rate:Number,shelve:''
}]});

И это модель книг

const bookSchema =new mongoose.Schema({
title :{
    type:"string",required:true
}});

И вот как я использую заполнить

router.get("/one", (req, res, next) => {
User.find({firstName : "John"}).populate("books.book").exec(function (err, user) { 
    res.json(user)
 });
})

, и это результат JSON

[{"_id":"5c70f299ef088c13a3ff3a2c","books":
[{"_id":"5c708c0077a0e703b15310b9"},{"_id":"5c708c0077a0e703b15310ba"},
 {"_id":"5c708c0077a0e703b15310bb"},{"_id":"5c708c0077a0e703b15310bd"}]}]

1 Ответ

0 голосов
/ 23 февраля 2019

Я считаю, что проблема в том, как определяется UserSchema.Я предполагаю, что включение rate и shelve в определение books вызывает проблему.

Попробуйте удалить эти поля, чтобы начать, и просто заполните books вместо books.book.Если это сработает, то я бы действительно пересмотрел те поля, где они есть.По моему личному мнению, они кажутся лучше в BookSchema, так как каждая книга в UserSchema в любом случае имеет rate и shelve.Надеюсь, это поможет !!

...