Mongoose 5的FAQ部分明确地说:
模式的唯一选项便于开发和文档编制,但是mongoose不是索引管理解决方案。
这句话让我失望,因为我对Mongoose图书馆来说比较新。我为User
制作了一个基本模型,并添加了几个验证测试。具体验证没有重复的用户。
架构很简单
const schema = new Schema({
email: { type: String, required: true, unique: true },
...
毋庸置疑,我的测试失败了:
const userA = new User({ email: 'a@a.com' });
const dupUserA = new User({ email: 'a@a.com' });
const promiseChain = userA.save().then(() => dupUserA.save());
expect(promiseChain).to.be.rejected // using chai-as-promised here
.then(err => {
// assertions about error message
});
测试失败导致承诺履行,意味着保存成功。
我不太了解Mongoose团队的意思。我意识到这些模式不是数据库"迁移",但由于文档中唯一的例子是对“索引”的一些回调。事件,我迷失了。
我应该如何处理唯一索引?有没有解决办法不通过shell直接将它们发送到MongoDB?可以驻留在代码库中的东西,相当于迁移?