gpt4 book ai didi

node.js - 如果不存在如何创建项目并在存在时返回错误

转载 作者:行者123 更新时间:2023-12-01 22:08:39 24 4
gpt4 key购买 nike

我正在编写 alexa 技能,想检查用户是否存在于 MongoDB 中。我的代码有效,但如果用户已经在数据库中,我不知道如何定义情况:(

每次执行代码时,我都会得到:“你好安娜,你是新来的”

我的用户 Anna 保存在 MongoDB 中

但我想区分我的用户何时已经在数据库中并对此使用react。

有没有聪明人能解决我的问题?

    var myName = "Anan1";
var userID = this.event.session.user.userId;
console.log(userID);

self = this;
User.findOneAndUpdate(
{userId: userID},
{$set:{name:myName}},
{upsert: true, new: false, runValidators: true},
function(err, doc){
if(err){
console.log("eeoror");
}

console.log(doc);
if (doc==null){
self.emit(':ask',
"Hello "+ myName +"you are new here")
}else {
self.emit(':ask',
"Hello "+ myName +"you are not new here")
}

});

最佳答案

听起来您真正想要的是 unique key constraint而不是更新。

可以使用模式字段选项在 [mongoose] 中设置唯一键:

const s = new Schema({ name: { type: String, unique: true }});

或通过 index方法:

Schema.path('name').index({ unique: true });

如果尝试创建一个已经有该键条目的文档,则会抛出错误:

NOTE: violating the constraint returns an E11000 error from MongoDB when saving, not a Mongoose validation error.

关于node.js - 如果不存在如何创建项目并在存在时返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com