为什么我的节点单例中的数据不是我放在那里的?
Why is the data in my node singleton not what I placed there?
在 node 中,我需要将对象从一个文件传递到另一个文件,因此我尝试使用具有 setter 和 getter 的单例。我确信我已经使用相同的方法成功地完成了这项工作,但是当我去获取对象时,它不是它应该的样子。
完整代码如下:
module.exports.setLocals = (ref, data) => {
let locals = {
previousEntries: data.previousEntries ? data.previousEntries : {},
errors: {},
current: {},
ref: ref
};
console.log(locals);
return;
};
module.exports.getLocals = () => {
console.log(locals);
return locals;
};
我这样调用setLocals:
locals.setLocals(ref, req.reqId);
并且本地对象设置为 { previousEntries: {}, errors: {}, current: {}, ref: '2aa8d390' },这正是我所期待的。
然而,当我调用 getLocals 时,对本地人执行 console.log 给我垃圾。
谁能给我一两个指点?谢谢
您的范围界定有问题。 setLocals
中的 locals
与 getLocals
中的不同(由于 let
)。
如果您在两个方法范围之外启动 locals
,您将能够共享它。
const locals = {
... default values.
};
module.exports.setLocals = (ref, data) => {
locals = { // <---- remove let
previousEntries: data.previousEntries ? data.previousEntries : {},
errors: {},
current: {},
ref: ref
}
console.log(locals);
return;
};
module.exports.getLocals = () => {
console.log(locals);
return locals;
};
在 node 中,我需要将对象从一个文件传递到另一个文件,因此我尝试使用具有 setter 和 getter 的单例。我确信我已经使用相同的方法成功地完成了这项工作,但是当我去获取对象时,它不是它应该的样子。
完整代码如下:
module.exports.setLocals = (ref, data) => {
let locals = {
previousEntries: data.previousEntries ? data.previousEntries : {},
errors: {},
current: {},
ref: ref
};
console.log(locals);
return;
};
module.exports.getLocals = () => {
console.log(locals);
return locals;
};
我这样调用setLocals:
locals.setLocals(ref, req.reqId);
并且本地对象设置为 { previousEntries: {}, errors: {}, current: {}, ref: '2aa8d390' },这正是我所期待的。
然而,当我调用 getLocals 时,对本地人执行 console.log 给我垃圾。
谁能给我一两个指点?谢谢
您的范围界定有问题。 setLocals
中的 locals
与 getLocals
中的不同(由于 let
)。
如果您在两个方法范围之外启动 locals
,您将能够共享它。
const locals = {
... default values.
};
module.exports.setLocals = (ref, data) => {
locals = { // <---- remove let
previousEntries: data.previousEntries ? data.previousEntries : {},
errors: {},
current: {},
ref: ref
}
console.log(locals);
return;
};
module.exports.getLocals = () => {
console.log(locals);
return locals;
};