新手求问 如何规避从param中取到undefined导致插入或编辑数据库报错 - CNode技术社区

新手求问 如何规避从param中取到undefined导致插入或编辑数据库报错
发布于 7 年前 作者 zj9495 2792 次浏览 来自 问答

代码如下

let postData = ctx.request.body
let data = {
 vend_id: postData.vend_id,
 vend_name: postData.vend_name,
 remark: postData.remark
 }
squel.update()
 .table('vendors')
 .setFields(data)
 .where('vend_id = ?', postData.vend_id)
\n``` 
params为post提交过来的数据
remark是非必填字段 有的时候前端没有传过来remark字段就会导致remark取到undefined squel就会报 field value must be a string, number, boolean, null or one of the registered custom value types的错误
有什么好的办法规避这种情况吗
目前我是写个clearProp方法清除data中为undefined的属性 感觉每次insert或者update之前都要调用一次特别的麻烦
我看一位5年的JAVA前同事写的nodejs代码 是把不需要的一些属性比如token之类的删除之后直接把postData插入到数据库 这样操作合适吗 感觉不太安全啊
有什么好的办法规避吗?
第一次在cnode发帖 多多包涵
1 回复

可以试试我写这个库哦,如果你觉得直接存不安全,你先验证一下就行了 https://github.com/gateschema/gateschema-js

import _ from 'gateschema'
let postData = ctx.request.body
const schema = _.required.map({
 vend_id: _.required.number, 
 vend_name: _.required.string,
 remark: _.optional.string
})
// 验证并且移除多余的
schema.validate(postData, {removeAdditional: true}, (err) => {
 if (err) {
 //...
 } else {
 	// ...
 }
})
回到顶部

AltStyle によって変換されたページ (->オリジナル) /