新手求问 如何规避从param中取到undefined导致插入或编辑数据库报错
代码如下
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 {
// ...
}
})