Задать тип другой определенной схемы для массива - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь определить массив 'comments' с типом Comment (другая схема).

    const beerSchema = new Schema({
    name:String,
    country:String,
    color:String,
    alcoholPercent:Number,
    upvotes:{type:Number,  default:0},
    comments:[{type:Schema.Types.ObjectId, ref:'comments'

    }]

});

объект коллекции

 [
    {
        "upvotes": 0,
        "comments": [],
        "test": [],
        "_id": "5b0092af2cdf6b30b80dd386",
        "name": "newName",
        "country": "Belgium",
        "color": "blond",
        "alcoholPercent": 4.5,
        "__v": 0
    }
]

мой класс схемы комментариев

const mongoose = require('mongoose');
const {Schema } = mongoose;

const commentSchema = new Schema({

    _beer:{type:Schema.Types.ObjectId, ref:'beers'},
    postedTime:{type:Date, default:Date.now()},
    comment:String,
    _user:{type:Schema.Types.ObjectId, ref:'User'} 

});

mongoose.model('comments', commentSchema);

запрос для заполнения:

const  newComment = new Comment({
        _beer:req.params.id,
        comment:'comm1',
        // _user:req.user.id
    });

    newComment.save(function(err){
        if(err) return handleError(err);


        console.log('new comment  saved');

    });

    Beer.findOne({name:'newName'})
        .populate('comments')
        .exec(function(err, comment){
            if(err) return handleError(err);
            console.log('new Comment is %s', comment._beer);
        });

мой console.log выдает мне ошибку, когда я пытаюсь записать комментарий. Не могу. Кто-нибудь может указать, что я делаю неправильно? Спасибо!

1 Ответ

0 голосов
/ 20 мая 2018

Ваша эталонная модель неверна Comment ... Она должна быть comments

const beerSchema = new Schema({
    name:String,
    country:String,
    color:String,
    alcoholPercent:Number,
    upvotes:{type:Number,  default:0},
    comments:[{type:Schema.Types.ObjectId, ref:'comments'}]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...