如何解决使用请求中的可选参数创建一个新的Mongoose对象
我有一个相当长且复杂的嵌套对象,里面带有可选对象(请参见下文)。我收到一个请求,可能缺少某些字段/对象-我该如何处理?我可以只使用“?”操作数-我已经尝试过,但似乎无法正常工作。我可以尝试另一种方法吗?
const product = new Product({
prodID: req.body.prodID,prodComponents: {
textComponent :{
item: req.body.prodComponents.textComponent.item ? req.body.prodComponents.textComponent.item : null
}
imageComponent:{
item: req.body.prodComponents.imageComponent.item ? req.body.prodComponents.imageComponent.item : null
}
}
)};
解决方法
有很多方法可以解决您的问题。变量req.body
只是JavaScript中的几乎所有对象,都是另一个对象。
我建议采用该对象并将其解析为程序或数据模型将处理的变量或其他对象,无例外地访问空白或未定义的字段。
function createProductDtoToProduct(data) {
const model = {
prodID: data.prodID,prodComponents: {
textComponent: {
item: null
},imageComponent: {
item: null
}
}
};
if (data.prodComponents && data.prodComponents.textComponentItem)
model.prodComponents.textComponent.item = {
id: data.textComponentItem.id,title: prodComponents.textComponentItem.title || "defaultTitle",}
if (data.prodComponents && data.prodComponents.imageComponentItem)
model.prodComponents.imageComponent.item = {
id: data.imageComponentItem.id,title: prodComponents.imageComponentItem.title || "defaultTitle",}
return model;
}
router.post("/createProduct",async (req,res) => {
const product = new Product(createProductDtoToProduct(req.body));
await db.save(product);
return "OK";
});
您还可以使用许多工具来验证请求的正文,例如:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。