我有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个名为主题和文章的集合,我不想要它们。 这是我现在的问题,任何人都可以建议我帮忙.....谢谢....
答案 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)
答案 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)