数组应当如何存取在mysql?最好是node解决办法
我用了express去开发一些功能。然后到了数据存取这一步
前端页面发送过来的数据这样处理
var theData = {
menu_id : theId,
menu_type: theBoxer.find("select").val(),
menu_name: theBoxer.find(".footName input").val(),
menu_info: theBoxer.find(".footDescript textarea").val(),
menu_pic : theBoxer.find(".theSelectImg").attr("src"),
menu_price: theBoxer.find(".theNumberOfFoot input").val(),
menu_stand : JSON.stringify(menu_stand),
menu_property :JSON.stringify(menu_property)
};
然后路由这边这样处理:
//更改信息
router.post("/updateMenu",function(req,res){
var connectDB = require('../models/getConnectDB');
var theConnect = connectDB.getConnect('admin');
var orderInfo = req.body;
var setString = '';
setString += 'menu_type='+orderInfo.menu_type+', ';
setString += 'menu_name=\''+orderInfo.menu_name+'\', ';
setString += 'menu_info=\''+orderInfo.menu_info+'\', ';
setString += 'menu_pic=\''+orderInfo.menu_pic+'\', ';
setString += 'menu_price=\''+orderInfo.menu_price+'\', ';
setString += 'menu_stand=\''+orderInfo.menu_stand+'\', ';
setString += 'menu_property=\''+orderInfo.menu_property+'\'';
var updateSql = 'UPDATE menu set '+setString+' WHERE menu_id = '+ orderInfo.menu_id +'';
console.log(updateSql);
theConnect.query(updateSql,function(err,results){
if(err){
console.log('errinfo='+err.message);
res.send({success:false,msg:"operate fail"})
}
theConnect.end();
res.send({success:true,msg:"operate success"});
});
})
存的时候是成功了,但是拿出来的时候,格式不正确。。不能正确解析json
"[{'standName':'但是防守对方','stand_price':'的方式发送','stand_less':'10000'}]"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
咳咳,老朋友来了。
1.首先是存储的问题,存储数组可以使用字符串的一个字段来存,将数组
JSON.stringify()
序列化之后存成字符串。2.建议使用
Sequelize
这个orm库,一是封装很多很方便的sql操作,也可以用原生sql,二是避免sql注入。3.express响应json直接用res.json(obj)。
4.上述代码的query的if err那里建议加上return,因为没有用else,会导致响应两遍而报错
Can't set headers after they are sent
emmmm
上面的大佬、我用的egg 我取出来后。json.parse 解析不出来数组。求教