我有以下字段的用户
id,name(varchar),gallery(json)
gallery
包含用户上传行的图片路径,用户可以将更多图片存储到他的图库中,每张图片的图片路径都存储在gallery
中作为json
这是一个示例行
id name gallery
1 blob ["test.jpg","test1.jpeg"]
这是我的代码
function(req,res){
//image path after upload
var imagePath =uploadS3();
//SELECT gallery FROM user and store to oldGallery
var oldGallery = getCurrentGallery()
var updatedGallery;
if(oldGallery==null){
updatedGallery = "[\""+imagePath+"\"]"
}else{
//concatinate the gallery row with new imagepath
updatedGallery = JSON.parse(oldGallery).push(imagePath);
}
db.query("UPDATE users SET gallery=? ",[updatedGallery],function(error,result){
});
}
但JSON.parse(oldGallery).push(imagePath);
的问题并没有奏效
console.log(JSON.parse(oldGallery).push(imagePath)
)输出2
而不是数组。
答案 0 :(得分:1)
Array.prototype.push()
在推送后返回数组的长度(不是数组本身)。您可以将它连接到新数组:
updatedGallery = JSON.parse(oldGallery).concat([imagePath]);
此外,updatedGallery
子句中的if
类型为String
,else
子句中的类型为Array
。你应该使它一致并使用字符串或数组。