【发布时间】:2017-12-15 23:47:16
【问题描述】:
我在 REST API 中使用 MongoDB 和 Mongoose。一些部署需要一个副本集,因此需要单独的读/写数据库,因此我在 API 中有单独的读/写连接。然而,更简单的部署不需要副本集,在这些情况下,我将我的读/写连接指向同一个 MongoDB 实例和数据库。
我的一般方法是在 API 启动时为两个连接创建所有模型。即使读/写 conns 连接到同一个数据库,我也可以在两个连接上创建相同的模型而不会出错。
let ReadUser = dbRead.model('User', userSchema);
let WriteUser = dbWrite.model('User', userSchema);
// no error even when dbRead and dbWrite point to same DB
在我开始使用 Mongoose 鉴别器之前,问题就来了。
let ReadSpecialUser = ReadUser.discriminator('SpecialUser', specialUserSchema);
let WriteSpecialUser = WriteUser.discriminator('SpecialUser', specialUserSchema);
// Results in this Error when read and write point to same DB:
// Error: Discriminator with name "SpecialUser" already exists
我正在寻找一种优雅的方式来处理这个问题。有没有办法在数据库中查询已经在使用的鉴别器?
【问题讨论】:
标签: node.js mongodb mongoose discriminator