如何使用mongoose处理唯一索引?

时间:2018-02-14 01:09:45

标签: mongodb unique-constraint

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?可以驻留在代码库中的东西,相当于迁移?

0 个答案:

没有答案