首页 > 解决方案 > 将另一种已定义模式的类型赋予数组

问题描述

我尝试使用类型注释(另一个模式)定义一个数组“注释”。

    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);
        });

当我尝试记录comment._beer 时,我的console.log 给了我未定义的错误。有人可以指出我做错了什么吗?谢谢!

标签: mongodbmongoose

解决方案


您的参考模型不正确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'}]
}

推荐阅读