处理帐户的服务具有添加新帐户的途径。显然,帐户中的电子邮件字段应该是唯一的。 我希望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?
答案 0 :(得分:0)
您已使用ensureIndex
collection.ensureIndex(option, response){
// here call you fucntion
}
如果还没有,那么ensureIndex方法将创建索引。