使用对象创建或更新mongodb [node.js]

时间:2017-11-28 01:10:27

标签: javascript node.js mongodb

我正在尝试创建/更新mongodb

为什么我的代码总是出错?

我的数据库架构:

var userSchema = new Schema({
  userAddress: {street: {type: String}, city: {type: String}, zip: {type: String}},
  userId: { type: String, required: true, unique: true },

});

var AddressObj = { street:address['addressLine1'], city:address['city'], zip:address['postalCode']  };


User.findOneAndUpdate(
        {userId:  userID}, 
        { $set: { "userAddress" : AddressObj} },
        function(err, doc){
            if(err){
                console.log("Something wrong when updating data!");
            }

            console.log(doc);
        });

没有错误。 DB中没有任何项目;(

1 个答案:

答案 0 :(得分:1)

如果不存在,你需要告诉mongoose创建一个新的doc。您可以通过将upsert选项指定为第3个参数的一部分来完成此操作。像这样:

User.findOneAndUpdate(
        {userId:  userID}, 
        { $set: { "userAddress" : AddressObj} },
        {upsert:true, new:true},  //upsert to create a new doc if none exists and new to return the new, updated document instead of the old one. 
        function(err, doc){
            if(err){
                console.log("Something wrong when updating data!");
            }

            console.log(doc);
        });