我想知道是否有办法强制一个唯一的集合条目,但只有当条目不为空时.e示例模式:
var UsersSchema = new Schema({
name : {type: String, trim: true, index: true, required: true},
email : {type: String, trim: true, index: true, unique: true}
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,'email'不是必需的,但如果保存'email',我想确保此条目是唯一的(在数据库级别).
空条目似乎得到值'null'所以每个条目都没有电子邮件与'unique'选项崩溃(如果有不同的用户没有电子邮件).
现在我正在应用程序级别上解决它,但是希望保存该数据库查询.
谢谢
我假设在字段中添加unique:true将停止使用相同的值保存到数据库。但是即时消息仍然允许这样做。
“猫鼬”:“ ^ 5.4.19”,
const SessionSchema = new Schema({
jobId: {
type: String,
required: false,
unique: true,
index: true,
},
productId: {
type: String,
required: true,
},
status: {
type: String,
default: "Pending",
},
mode: {
type: String,
default: "authentication",
},
result: {
type: Schema.Types.Mixed,
},
requests: [RequestSchema],
callback_at: {
type: Date,
},
}, {
timestamps: { createdAt: "created_at", updatedAt: "updated_at" },
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除并重新创建集合。参见下图,我可以使用相同的jobId创建1的新会话。
public store = async (req: Request, res: Response): Promise<any> => {
const input = req.body;
let …Run Code Online (Sandbox Code Playgroud)