我有这样一个模式:
export const HotelSchema = new mongoose.Schema({
name: String,
firstName: String,
email: { type: String, unique: true },
canLogin: Boolean
},
{
collection: "hotels"
}
);
并使用以下查询添加/更新I am:
this.hotelModel.updateOne({ _id: hotel._id }, hotel, { upsert: true });
我经过的酒店目标:
{
"email" : "er.markar@gmail.com",
"name" : "sunny123"
}
但它插入了_id
为空的重复电子邮件:
甚至我尝试了findOneAndUpdate
。在电子邮件模式中尝试了autoIndex
。仍然不起作用。
我错过什么了吗?
2条答案
按热度按时间aelbi1ox1#
请参见www.example.comhttps://mongoosejs.com/docs/validation.html#the-unique-option-is-not-a-validator
事实上,你应该在一个字段上使用唯一索引。
dsf9zpds2#
你看,
您正在传递电子邮件和姓名。但您没有传递_id,因此将找不到hotel._id。您应该
此. hotelModel. updateOne({电子邮件:www.example.com},酒店,{upsert:true});hotel.email}, hotel, { upsert:true});