如果用户不存在,MongoDB会更新

时间:2018-05-07 12:35:24

标签: node.js mongodb mongoose

如果用户的名字在我的数据库中不可用,我将无法更新用户

我想如果我的功能" 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;

2 个答案:

答案 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

我相信使用类似的模式,你可以修改你的代码来做你需要的。