使用 Node js 和 Sequelize ORM,我得到了一个数据集。我需要为接收到的数据添加一个新属性并将其发送到客户端。这是我尝试过的。
代码块 1
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);
你能帮我弄清楚问题出在哪里吗?
EDIT
代码块 5
var newJson = {};
newJson = varMeal;
newJson['addons'] = varAddOn;
var retVal = newJson;// JSON.parse(newJson);
res.send(retVal);
我也尝试了“代码块 5”。结果与“代码块 2”相同。当我使用 JSON.parse(newJson) 时,它被抛出了一个错误。 (错误是位置 1 处 JSON 中的意外标记 o)
最佳答案
您需要调用.get
在您的模型实例上,然后为其附加额外的属性:
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 对象。 varMeal.get()
.从那里,您可以为其添加额外的属性。 meal
关于json - 向 JSON 添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220827/