如何在mongoDB中创建唯一索引?

时间:2017-12-19 05:30:50

标签: node.js mongodb

处理帐户的服务具有添加新帐户的途径。显然,帐户中的电子邮件字段应该是唯一的。 我希望app在比赛成立时随时抛出错误。

此时通过手动功能实现:

const { createError } = require('micro')

const createAccount = async (collection, credentials) => {
  const { email } = credentials
  const account = await collection.findOne({ email })
  if (account) {
    throw createError(401, 'this email is already used')
  }
  collection.insertOne({ email })
}

module.exports = createAccount

当我使用mongoose时,添加唯一索引没有问题。这次,使用了原生的mongoDB驱动程序。 根据文档,我试图添加类似的东西:

collection.createIndex({ email: 1 }, { unique: true })

事实上,它确实创建了一个索引,我可以在我的mlab home中看到它: https://gyazo.com/8f0e36a3134154acde0b77cf2ade61a6

也许我使用了过时的语法或类似的东西?为什么key的唯一设置为false?

1 个答案:

答案 0 :(得分:0)

您已使用ensureIndex

collection.ensureIndex(option, response){
 // here call you fucntion
}
如果还没有,那么

ensureIndex方法将创建索引。