我正在尝试过滤填充的元素,具体取决于它是true || false
,然后删除(或不删除)某些字段。
那就是说,我实际上是用意外的响应复制我的端点的代码:
router.get('/endpoint', tokenAuth, function (req, res) {
var json_allData;
Model.getInfo(req.query.info)
.then(function (data) {
json_allData = data;
return Model.filterAnonymous(data.subdocument);
})
.then(function (data) { // << Data here is a subdocument filtered as expected
res.status(200).json({ data: json_allData }); // << WTF??? data has been filtered in the json_allData but I'm not doing anything!
})
.catch(function (error) {
res.status(400).json({ msg: error });
});
});
希望有人能在这里说清楚。
感谢您的建议。
答案 0 :(得分:2)
当你这样做时
json_allData = data;
您使json_allData
指向与data
相同的内存。这意味着两个变量都引用同一个对象。
现在你做的时候
Model.filterAnonymous(data.subdocument);
这会更改subdocument
属性,该属性属于对象data
的引用,而仍是同一个对象 json_allData
正在引用。