我在NodeJS中使用API方法调用一个函数,接收一个JSON对象intent
,尝试添加一个新属性"测试"并返回该对象。问题是新属性"测试"永远不会显示在返回的对象中。但是,现有的"处理过的"是正确的改变。有什么想法吗?
function process_first(req, res, next) {
Intent.getFirstUnprocessed()
.then(intent => {
intent.tested = "DONE";
intent.processed = true;
res.json(intent);
})
.catch(e => next(e));
}
intent
最初有此值:
{"processed":false,"payload":"hello","createdAt":"2017-02-16T05:07:19.596Z"}
然后它返回:
{"processed":true,"payload":"hello","createdAt":"2017-02-16T05:07:19.596Z"}
答案 0 :(得分:2)
您的intent对象可以是一些自定义对象(由某些库返回,如mongoose)。大多数情况下,您无法直接修改这些对象。您可以将它们更改为普通的javascript对象。这些库为您提供了用于此目的的方法(如toObject或toJSON)。此外,如果它是一个集合,如地图或类似的东西,它也有toObject方法。
如果对象是地图请试试这个:
function process_first(req, res, next) {
Intent.getFirstUnprocessed()
.then(intent => {
var intenObject = intent.toObject();
intenObject.tested = "DONE";
intenObject.processed = true;
res.json(intenObject);
})
.catch(e => next(e));
}
如果是json字符串
function process_first(req, res, next) {
Intent.getFirstUnprocessed()
.then(intent => {
var intenObject = JSON.parse(intent);
intenObject.tested = "DONE";
intenObject.processed = true;
res.json(intenObject);
})
.catch(e => next(e));
}