2

我正在创建一个基于This example的节点应用程序。

server.js具有以下内容:

fs.readdirSync(__dirname + "/app/model").forEach(function (file) {              
    if (~file.indexOf(".js")) {                                                 
        require (__dirname + "/app/model" + "/" + file);                        
    }                                                                           
});

这包括来自app/model. 这可行,但问题是我的模型具有示例中未出现的引用依赖项。具体来说,我有一个这样的模型:

ResourceSchema = new Schema({
    "comment": [Comment]
});

但是,当我运行时,node我得到一个Comment未定义的错误,这并不是真正出乎意料的。

即使架构有引用,示例中也没有出现,因为它使用:

user: {type : Schema.ObjectId, ref : 'User'},                                 

我的问题是,我应该"comment": {type: [Schema.ObjectId], ref: "Comment"}改用(或其他东西吗?)是否有适当的方法在资源模式声明中包含 Comment 的模式引用?

4

1 回答 1

3

如果要定义引用数组,则应使用以下定义:

ResourceSchema = new Schema({
  "comment": [{type : Schema.ObjectId, ref : 'Comment'}]
});

您定义注释的方式用于定义子文档数组(请参阅 mongoose API 文档)。

因此,只有当您想将所有评论直接存储在父文档中时,才应该使用它。在这种情况下Comments,模式应该已经定义,或者需要另一个模块。

于 2013-08-06T19:24:24.247 回答