【问题标题】:adding data to schema optionally in mongodb using node js使用节点 js 在 mongodb 中可选地向模式添加数据
【发布时间】:2021-11-12 21:41:14
【问题描述】:

我做了一个 2 mongodb 模式,其中一个依赖于另一个模式,我的两个看起来像这样

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 addOwner = async (req, res) => {
 
    const { shopName, shopLocation } = req.body.shopPlace;
    const shop = new Shop({
      shopName,
      shopLocation,
    });
    await shop.save();

    const { ownerId, fname, lname } = req.body;
    const newOwner = new Owner({
      ownerId,
      fname,
      lname,
      shopPlace: shop._id,
    });
    await newOwner.save();
};

问题是有时我不希望 shopPlace 数据它应该是空白的

但我只从邮递员发送 ownerId、fname、lname,它没有保存在我的数据库中,如果我不想要 shopPlace,它应该将数据保存到我的架构中,它应该是可选的

【问题讨论】:

  • 所以您希望 shopPlace 数据得到保存还是不希望它被保存?
  • 它应该被保存但它应该是可选的@itiDi

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


【解决方案1】:

在您的模型中,您可以为shopPlace 设置默认值,如下所示:

shopPlace : { 
   type: Schema.Types.ObjectId,
   ref: 'Shop',
   default: null
}

因此,如果您在创建新的Owner 时不提供shopPlace,它将是null

【讨论】:

  • 它显示Cannot destructure property 'shopName' of 'undefined' or 'null'."
  • 这是因为您没有在请求中提供shopPlace。您可以添加一个条件来检查req.body.shopPlace 是否存在,然后创建一个新的Shop。当你在下面创建一个新的Owner 时,你可以短路shopPlace 属性:shopPlace: shop && shop._id
  • 我已经创建了一个 if 条件来检查 if (req.body.shopPlace){ const { shopName, shopLocation } = req.body.shopPlace; const shop = new Shop({ shopName, shopLocation, }); await shop.save();,但它仍然无法正常工作
  • 哦,太好了,很高兴为您提供帮助:)
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 2021-11-11
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多