如何在mongoose

时间:2016-10-17 05:41:25

标签: node.js mongodb mongoose

我有3种记录,

1)Categories,
2)Topics  and
3)Articles 

在我的mongodb中,我只有一个名为“类别”的集合,其中我使用上述3种类型的文档。

对于这3个模块,我用下面这样的方式写了3个模型(每个模型),

mongoose.model('categories', CategorySchema);
mongoose.model('categories', TopicSchema)
mongoose.model('categories', ArticlesSchema)

喜欢.... mongoose.model('collection_name',Schema_name)

但是当我运行我的代码时,它会抛出错误

Cannot overwrite `categories` model once compiled.

如果我更改上述模型,

mongoose.model('category','categories', CategorySchema);
mongoose.model('topics','categories', TopicSchema)
mongoose.model('articles','categories', ArticlesSchema)

它正在创建2个名为主题和文章的集合,我不想要它们。 这是我现在的问题,任何人都可以建议我帮忙.....谢谢....

4 个答案:

答案 0 :(得分:17)

尝试 -

mongoose.model('category', CategorySchema, 'categories');
mongoose.model('topics', TopicSchema, 'categories');
mongoose.model('articles', ArticlesSchema, 'categories');

如文档中所述:http://mongoosejs.com/docs/api.html#index_Mongoose-model

  

Mongoose#model(name,[schema],[collection],[skipInit])

     

定义模型或检索模型。

     

参数:

     
      
  • 第一个参数 - 名称< String>型号名称
  •   
  • 第二个参数 - [架构]<架构>架构名称
  •   
  • 3rd param - [collection]< String>集合名称(可选,从型号名称引出)
  •   
  • 第4个参数 - [skipInit]< Boolean>是否跳过初始化(默认为false)
  •   

请参阅 - https://stackoverflow.com/a/14454102/3896066

答案 1 :(得分:2)

“第一个参数是您的模型所使用的集合的单数名称。猫鼬会自动查找您的模型名称的复数形式”-直接来自模型文档-https://mongoosejs.com/docs/models.html

答案 2 :(得分:1)

如您所说, 当你写这个的时候,

mongoose.model('categories', CategorySchema);
mongoose.model('categories', TopicSchema);
mongoose.model('categories', ArticlesSchema);

输出变得不合适,因此 相反,

mongoose.model('category', CategorySchema);
mongoose.model('topic', TopicSchema);
mongoose.model('article', ArticlesSchema);

奖金提示。 猫鼬默认情况下会将您的集合名称设为复数,因此,如果您想要编写的集合名称,请更改一些代码。

mongoose.model('category', CategorySchema,'category');
mongoose.model('topic', TopicSchema,'topic');
mongoose.model('article', ArticlesSchema,'article');

答案 3 :(得分:0)

相关问题