node.js - 唯一的部分索引不适用于电子邮件上的猫鼬
问题描述
我正在使用 mongodb 4.4.4 版和 mongoose 5.5.9 版。我有一个用户模式,这就是我定义它的方式
let User = new Schema({
email: { type: String, required: true, unique: true},
phone: { type: String, required: true, unique: true},
terms_accepted: { type: Boolean, required: true }
});
我在 mongo 指南针中检查了为电子邮件和电话创建的唯一索引。我重新启动了 mongodb 并重新索引它。我可以使用相同的电子邮件地址保存数据。虽然电话唯一索引工作正常。
如果我使用 'mongoose-unique-validator - version 2.0.6' 插件,电子邮件索引将按预期工作。我想在我的模型中使用具有唯一约束的部分索引。我试过这样
email: { type: String, required: true, index: {
unique: true,
partialFilterExpression: { terms_accepted: true }
}}
我通过将“terms_accepted”设置为 true 和 false 对此进行了测试(有或没有 mongoose-unique-validator),电子邮件索引无法保存数据。我尝试在指南针中手动创建索引,它也不起作用。我已经尝试了所有关于堆栈溢出的解决方案,但都没有成功。我不知道是什么问题。
解决方案
推荐阅读
- reactjs - “绝对”定位视图位置在初始渲染后发生变化
- javascript - 将 DIV 位置更改为 DOM 的静态部分
- flutter - 如何在 Flutter Android 11 (R) 中请求允许管理所有文件权限
- javascript - Array(1) 和 [...Array(1)] 之间的区别
- java - 如何在 for 循环中访问字符串值?
- c++ - c++ 文件ostream或文件打印函数在输出char数组时是否将'\0'输出到文件
- python - 如何通过给定的输入文件使用Python在excel中行的某些条件下在列中添加默认值和公式?
- docker - 在部署 AppEngine flex 时将参数传递给 Docker 构建
- c - LKM 从 netfilter 挂钩运行 call_usermodehelper
- java - 两个线程上的进度条