值将请求传递给节点js中的其他类

时间:2018-02-19 19:24:11

标签: node.js express request httprequest node-modules

我正在使用mongoDB来存储文档。在我的http get请求中,我拉出特定的文档记录并将其保存在请求对象上以进行处理(使用中间件)。稍后当有任何补丁/放置请求时,我使用相同的请求对象并修改参数。但问题在于我想在put / patch请求中修改之后使用先前的请求存储值。即使我试图在请求参数下存储不同的变量,但是当我在req值上更改任何内容时,所有请求值都会被修改。下面是代码。

req.PreviousStoreData = _.head(data);  //data object
req.currentData = _.head(data);   // copy data object
req.currentData.status = req.body.status;
// now if try to see the PreviousStoreData then it also got modified with latest status (modified only in currentData param)

如果有什么不能理解的话,请给我回电话

2 个答案:

答案 0 :(得分:0)

使用Object.assign(),就像那样:

req.PreviousStoreData = {};
Object.assign(req.PreviousStoreData, _.head(data));
req.currentData = _.head(data);
req.currentData.status = req.body.status;

通过键入“=”,您可以设置对象的引用,该对象与currentData使用的对象相同。更改此对象将导致两个值都发生更改。

Object.assign()将源对象(最后一个参数)中的所有参数复制到目标对象(不是最后一个参数),因此您实际上是在复制对象而不是引用它。

答案 1 :(得分:0)

Object.assign()似乎确实如此。但是第一个参数需要是一个空对象,作为源对象,这样就不会影响引用。

req.PreviousStoreData = Object.assign({}, _.head(data));  
req.currentData = Object.assign({}, _.head(data));   
req.currentData.status = req.body.status;

在这里,您要复制Object,而不是为其指定引用。