如果用户的名字在我的数据库中不可用,我将无法更新用户
我想如果我的功能" User.findOne"在我的mongodb中找不到用户可以更新数据库。不幸的是没有任我只得到输出"你好安娜,你是新来的!"我的名字没有保存到我的mongodb
有人可以聪明地给我一个提示,如果不在我的数据库中,我该如何保存用户名
var User = require('./user');
var myName = this.event.request.intent.slots.first_name.value;
self = this;
User.findOne({ name: myName }, function(err, user) {
if (err ||!user){
var userSave = new User({
name: myName
});
userSave.save(function (err, results) {
console.log(results);
self.emit(':ask',
"Hello "+ myName +"you are new here!")
});
}
else {
self.emit(':ask',
"Hello "+ myName +" you are not new!")
}
});
我的猫鼬模型代码:
//user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect("mongodb://c******mlab.com:***/users");
var userSchema = new Schema({
name: String,
userId: { type: String, required: false, unique: true }
});
var User = mongoose.model('User', userSchema);
module.exports = User;
答案 0 :(得分:1)
var User = require('./user');
var myName = this.event.request.intent.slots.first_name.value;
self = this;
User.findOne({
name: myName
}, (err, user) => {
if(err) throw err;
if(user) {
self.emit(':ask', `Hello ${myName} you are not new`);
} else {
User.create({
name: myName
}, (err, result) => {
if(err) throw err;
console.log(result);
self.emit(':ask', `Hello ${myName} you are new here!`);
})
}
});
这应该有效。
答案 1 :(得分:0)
行if (err || !user)
令人困惑,因此您可以在此样式中混合错误处理(if (err)
)以及代码中预期会遇到的条件({{1} })。我建议你将它们分开,以便代码更容易阅读和调试。
例如,使用普通的Javascript和MongoDB节点驱动程序:
if (!user)
如果数据库包含用户var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost/test', function(err, conn) {
// connection error handling
if (err) {
console.log('Connection error: ' + err);
}
conn.db('test').collection('test').findOne({name:'abc'}, function(err, doc) {
// findOne error handling
if (err) {
console.log('Error: ' + err);
}
// if document exists
if (doc) {
console.log('Document found: ' + JSON.stringify(doc));
}
// if document doesn't exist
else {
console.log('Document not found');
}
conn.close();
});
});
,则输出为:
abc
如果用户$ node script.js
Document not found
存在:
abc
我相信使用类似的模式,你可以修改你的代码来做你需要的。