gpt4 book ai didi

javascript - 传播语法返回意外的对象

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:08 25 4
gpt4 key购买 nike

我正在使用 Node 并且我已经使用过。

babel Node

    "start": "nodemon --exec babel-node --presets es2015 index.js"

我的传播语法没有按预期工作。这是我的代码。

   export const login = async (parentValue, { email, password }) => {
try {
const user = await User.findOne({
email
});
console.log(user);

if (!user.authenticateUser(password)) {
throw new Error('Wrong password');
}
const dummyObject = {
...user
};
console.log({ dummyObject });
return { ...user };
} catch (e) {
console.log(e);
throw new Error(e.message);
}
};

我使用 console.log(user) 的行,它工作正常。它返回{
编号:xxx,
姓名:xxxx
}

我在 console.log(dummyObject) 上得到了意外数据;这是我得到的。

{ jojo: 
{ '$__':
InternalCache {
strictMode: true,
selected: {},
shardval: undefined,
saveError: undefined,
validationError: undefined,
adhocPaths: undefined,
removing: undefined,
inserting: undefined,
saving: undefined,
version: undefined,
getters: {},
_id: 5c798295f53323b34cabf1ca,
populate: undefined,
populated: undefined,
wasPopulated: false,
scope: undefined,
activePaths: [Object],
pathsToScopes: {},
cachedRequired: {},
session: undefined,
ownerDocument: undefined,
fullPath: undefined,
emitter: [Object],
'$options': [Object] },
isNew: false,
errors: undefined,
_doc:
{ _id: 5c798295f53323b34cabf1ca,
fullName: 'sarmad',
password: '$2a$10$c.XDX75ORXYA4V/hUXWh.usVf2TibmKfY.Zpu3cpTssFaYvsGyhte',
email: 'sarmad@gmail.com',
createdAt: 2019-03-01T19:05:57.454Z,
updatedAt: 2019-03-01T19:05:57.454Z,
__v: 0 },
'$init': true } }

我做错了什么吗?从技术上讲,它应该返回用户对象注意:我不想使用 Object.assign

最佳答案

看起来您正在使用 mongoose,并且您正在使用扩展运算符获取 mongoose 对象属性。您需要转换为 JSON 以摆脱这些。

尝试:const dummyObject = { ...user.toJSON() };

您还可以:const dummyObject = { ...user.toObject() };

^ 这可能是首选方式

另一种解决方案是在进行查询时仅请求普通对象。例如:

Schema.findOne(query).lean()

这将返回一个普通对象而不是 Mongoose 对象。

关于javascript - 传播语法返回意外的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com