一个承诺意想不到的结果
我试图过滤一个填充元素,这取决于一个true || false
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 }); }); });
希望有人可以在这里投下一些光。
感谢您的build议。
当你这样做
json_allData = data;
你让json_allData
指向与data
相同的内存。 这意味着两个variables都引用同一个对象。
现在当你这样做
Model.filterAnonymous(data.subdocument);
这改变了作为对象data
一部分的subdocument
属性被引用,并且仍然是 json_allData
引用的同一对象 。