向JSON添加新属性
使用Node js和Sequelize ORM,我得到了一个数据集。我需要为接收到的数据添加一个新属性,并将其发送到客户端。这就是我试过的 代码块1向JSON添加新属性,json,node.js,sequelize.js,Json,Node.js,Sequelize.js,使用Node js和Sequelize ORM,我得到了一个数据集。我需要为接收到的数据添加一个新属性,并将其发送到客户端。这就是我试过的 代码块1 var varAddOns = { "id" : 5, "Name" : "Cheese"}; global.meal.findOne( { where: { id: 5 } }).then(varMeal => { var obj = {};
var varAddOns = { "id" : 5, "Name" : "Cheese"};
global.meal.findOne(
{
where: { id: 5 }
}).then(varMeal => {
var obj = {};
obj = varMeal;
obj.addons = varAddOns;
res.send(obj);
});
它返回一个json,如下所示。(实际上它不包含“插件”数据)
代码块2
{
"id": 12,
"mealName": "Burger",
"description": "Oily food",
}
但实际上我想要的是
代码块3
{
"id": 12,
"mealName": "Burger",
"description": "Oily food",
"addons" : {
"id" : 5,
"Name" : "Cheese"
}
}
我试过下面这样的方法,但也不管用。(它返回与“代码块2”相同的json。)
代码块4
var newJson = {};
newJson = JSON.stringify(varMeal);
newJson['addons'] = varAddOns;
var retVal = JSON.parse(newJson);
res.send(retVal);
你能帮我弄清楚问题出在哪里吗
编辑
代码块5
var newJson = {};
newJson = varMeal;
newJson['addons'] = varAddOn;
var retVal = newJson;// JSON.parse(newJson);
res.send(retVal);
我也尝试了“代码块5”。结果与“代码块2”相同。当我使用JSON.parse(newJson)时,抛出了一个错误。(错误是JSON中位于位置1的意外标记o)当您将
newJson['addons']
声明为嵌套对象时,需要将JSON作为对象
您是否尝试过(在代码块4中)不字符串化Varmine?您需要调用
。获取模型实例上的,然后向其附加额外属性:
var varAddOns = { "id" : 5, "Name" : "Cheese"};
global.meal.findOne(
{
where: { id: 5 }
}).then(varMeal => {
var obj = {};
obj = varMeal.get();
obj.addons = varAddOns;
res.send(obj);
});
有几件事:
- 调用
findOne
时,Sequelize返回一个模型实例,而不是包含数据的普通JS对象
- 如果要添加额外的属性发送给用户,首先需要将模型实例转换为包含数据的JS对象。您可以通过调用
varmein.get()
,将额外的属性添加到模型实例中
- 没有必要在变量前面加上“var”。最好简单地将变量命名为
fine
是的。它也不起作用。我已经按照您的指示编辑了我的OP并添加了代码块5。“您能帮我找出问题出在哪里吗?”--您不知道问题出在哪里。它是某些数据结构的文本表示。您想向数据结构添加属性(在将其表示为JSON之前)JSON表示是一个字符串,向它添加属性没有帮助。