在mongodb中使用node js可选地添加数据到schema



我做了一个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);

这是我的add函数

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数据它应该是空白的

但是我只从postman发送ownerId, fname, lname它不会保存在我的数据库中有没有可能如果我不想要shopPlace它仍然会保存数据到我的模式中它应该是可选的

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

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

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

相关内容

  • 没有找到相关文章

最新更新