【发布时间】:2019-08-04 12:58:56
【问题描述】:
我遇到了一个问题,我似乎无法在整个函数中保持值不变。就像我做这样的事情:
console.log(object.maxhp)
console.log(object)
它会显示 maxhp 属性值,但是第二个 console.log 甚至不会显示它。
这是它的主要功能:
const loadUp = async args => {
let c, t, q;
c = "User";
t = "findById";
q = [args.id];
let user = await query(c, t, q);
user.toObject();
statHandler(user);
addSnapShot(args.id, user);
console.log(user.maxhp);
console.log(user);
c = "Area";
t = "findOne";
q = [{ name: user.location.area }];
let ml = await query(c, t, q);
Object.assign(user, { mobs: ml });
c = "User";
t = "updateOne";
q = [{ _id: args.id }, { $set: { online: true } }];
query(c, t, q);
return await user;
};
这里是查询函数:
const q = async (c, t, q) => {
c = require(`../models/${c}`);
let query = c[t](q[0], q[1]);
return await query.exec().then(res => {
return res;
});
};
module.exports = q;
(我在导入时将其作为 query())
所以基本上,stathandler 应该在用户对象中添加和修改大量信息并更新它。快照以某种方式具有正确的这些值(但我可以在 console.log(user) 时看到它们,但如果我指定它们 user.maxhp 则可以)。
但是,当我将它们发送给客户端时,它似乎丢失了这些值。在我使用新的查询功能之前,我已经完成了这项工作,但我不知道为什么它会损坏。
(我不会费心将 stathandler 函数发布为非常长,而且我知道它的一部分有效,因为我没有更改该特定函数中的任何内容)
我很确定这是我处理查询的方式,但我终其一生都无法弄清楚到底是什么搞砸了。
【问题讨论】:
标签: node.js mongodb mongoose socket.io