所以,我有以下模式:
const Players = new mongoose.Schema({
discordID: {
type: String,
unique: true,
required: function () {
return typeof this.discordID !== "string" && this.discordID !== null
}
})
我的观点是使discordID
独一无二,但前提是它不null
或""
。
我听说过稀疏,但它似乎没有像我想要的那样工作。每次尝试插入 discordID 设置为null
的 2+ 文档时,我都会收到重复错误(我尝试了sparse: true
和index: {sparse: true, unique: true}
)。
我能做些什么吗?如果可能的话,我想在架构级别保留此验证。
稀疏索引适用于省略键的文档。包含所需的discordID
并将其设置为传递到数据存储的null
。
https://docs.mongodb.com/manual/core/index-sparse/
稀疏索引仅包含具有索引字段的文档的条目,即使索引字段包含 null 值也是如此。索引将跳过缺少索引字段的任何文档。
将字段设置为在猫鼬中undefined
,以便在保存之前将其删除。