【问题标题】:can't upadte mongodb schema if its null using node js如果使用节点 js 为空,则无法更新 mongodb 架构
【发布时间】:2021-11-13 09:37:57
【问题描述】:

我正在尝试更新设置为 null 的第二个架构 例如。这是我的输出样子

{
      "_id": "6145b0c7331a5a4634640f27",
      "ownerId": "b0jyt9gvktpl6936",
      "fname": "Gravity",
      "lname": "Movie",
      "shopPlace": null,
      "createdAt": "2021-09-18T09:26:31.801Z",
      "updatedAt": "2021-09-18T09:26:31.801Z",
      "__v": 0
    }

我的架构看起来像这样

ownerSchema.js

var ownerSchema = Schema({
    ownerId   : String,
    fname     : String,
    lname     : String,
    shopPlace : { 
                  type: Schema.Types.ObjectId,
                  ref: 'Shop'
                },
    shopType    String
});
var Owner = mongoose.model('Owner', ownerSchema);

shopSchema.js

var shopSchema = Schema({
    _id       : String,
    shopName  : String,
    location  : String,
    startDate : Date,
    endDate   : Date
});
var Shop  = mongoose.model('Shop', shopSchema);

我的函数更新看起来像这样

const update = async (req, res) => {
  const { id } = req.params;
  let update = {};
  let updateShop = {}
  if (req.body.fname) update.fname = req.body.fname;
  if (req.body.lname) update.lname = req.body.lname;
  if (req.body.shopPlace.shopName) updateShop.shopPlace.shopName = req.body.shopPlace.shopName;
  if (req.body.shopPlace.location) updateShop.shopPlace.location = req.body.shopPlace.location;

   const { shopPlace } = await Owner.findOneAndUpdate(
     { _id: id },
      {
        $set: update,
      },
      { new:true}
     );

    let newShop = await Shop.findOneAndUpdate(
     { _id: shopPlace },
      {
        $set: updateShop,
      },
      {new:true}
     );

};

如果我的商店架构看起来像这样,我可以通过邮递员轻松更新它

"shopPlace":{
             "shopName":"Juice Center",
             "location":"mumbai"
            }

但如果 shopPlace 为空,然后我尝试更新我的商店架构,它不会更新我的架构并且看起来一样

"shopPlace":null

【问题讨论】:

  • 但如果 shopPlace 为空,然后我尝试更新我的商店架构,它不会更新我的架构 =>如果它是 null,它将如何更新,商店收藏中有_id: null的文件吗?
  • 没有@turivishal,因为我做了 if else 声明,如果用户不想添加商店,那么如果它想更新他的商店,它将在未来无效,这就是我尝试更新商店的原因
  • 您的问题不清楚,如果它为空,您是否尝试在商店集合中插入文档?
  • 是的,如果数据为空,我将尝试插入数据,这就是我尝试更新商店架构的原因
  • 好的,同时更新所有者集合中的 _id 对吗?

标签: node.js mongodb express mongoose mongodb-query


【解决方案1】:

ownerSchema.js:

var ownerSchema = Schema({
    ownerId   : String,
    fname     : String,
    lname     : String,
    shopPlace : { 
                  type: Schema.Types.ObjectId,
                  ref: 'Shop'
                  default: 'null'
                },
    shopType    String
});
var Owner = mongoose.model('Owner', ownerSchema);

【讨论】:

    猜你喜欢
    • 2021-06-13
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2017-08-30
    • 2014-03-31
    相关资源
    最近更新 更多