Javascript 处理API调用中丢失的数据
我有一个路由处理程序,它需要将一些数据(Javascript 处理API调用中丢失的数据,javascript,node.js,rest,express,mongoose,Javascript,Node.js,Rest,Express,Mongoose,我有一个路由处理程序,它需要将一些数据(car.name)传递给它,以服务于它的功能 carRouter.route('/create') .post(carController.create) function create(req, res, next) { const carInstance = new carModel({ activated: false, name: body.car.name, 如果没有body.car.name,express将崩溃 我
car.name
)传递给它,以服务于它的功能
carRouter.route('/create')
.post(carController.create)
function create(req, res, next) {
const carInstance = new carModel({
activated: false,
name: body.car.name,
如果没有body.car.name
,express将崩溃
我可以通过添加以下检查来处理此问题:
if (body.car.name) {
function create(req, res, next) {
但由于有大量的模型属性,这很快就会变得很麻烦
我的CarSchema
本身已经有了验证设置,因此我想将验证委托给mongoose,避免在请求中缺少数据时应用程序崩溃
我已经在github上查看了很多真实的例子,试图找到如何处理这个问题,结果好坏参半
处理这种基本情况的正确方法是什么?
TypeError
试图读取非对象的属性时抛出?也许这有助于:
name: body.car ? body.car.name : null
或者,如果您不关心名称
是否为未定义
:
name: body.car && body.car.name
试图读取非对象的属性时抛出
TypeError
?也许这有助于:
name: body.car ? body.car.name : null
或者,如果您不关心名称
是否为未定义
:
name: body.car && body.car.name
如果数据丢失,您希望API调用的结果是什么?@jfriend00我想返回40*如果数据丢失,您希望API调用的结果是什么?@jfriend00我想返回40*如果
body.car
存在,但是body.car.name
不存在,那么查询不存在的属性是可以的,但不查询不存在的对象的属性body.car.name
的计算结果仅为undefined
。确定<代码>正文将始终存在?它与代码的其他部分相关。在节点中,特别是在Express中,有一个req
对象传递给handler函数。它是http请求的http
模块包装器,它有req.body
字段,只要http请求有。您正在处理POST请求,因此在处理函数中,req.body
肯定包含所有数据(您必须使用body解析器
):p reposted:Ok。因此,我可以在创建模型之前放置body.car存在性检查,比如if(body.car){const carInstance=new carModel({activated:false,name:body.car.name
?如果body.car
存在但body.car.name
不存在怎么办?查询不存在的属性可以是JS,但不查询不存在的对象的属性。body.car.name
的计算结果只是未定义
。确定。body
将始终存在?它与代码的其他部分。在节点中,特别是在Express中,有一个req
对象传递给处理程序函数。它是http请求周围的http
模块的包装器,它有req.body
字段,只要http请求有。您正在处理POST请求,所以在处理程序函数中req.body
应该包含所有数据(必须使用body parser
):p reposted:Ok。因此,我可以在创建模型之前进行body.car存在性检查,如if(body.car){const carInstance=new carModel({activated:false,name:body.car.name
?