【发布时间】:2018-11-18 18:30:52
【问题描述】:
我正在使用 Mongoose 的 findOneAndUpdate 方法,但似乎无法从中获取任何有用的信息。我试过使用调用它返回的查询(在updatedUser中),但它返回null;我也尝试过包含回调参数,但是当我这样做时,err 和 doc 都会返回 null。
上下文:我正在使用 Jest 构建一个测试套件,并为此功能编写测试。我已经在测试套件之外的应用程序中使用了该函数,虽然我更改了函数的部分内容,但除了添加回调参数之外,我没有更改 findOneAndUpdate 调用中的任何内容。
预期行为: 'err' 或 'doc' 都不会返回 null,所以我至少知道发生了什么。
我与 Mocha 合作过,并且正在学习 Jest,并且我发现了 Jest 所做的其他一些有趣的事情。我从经验中知道,这很可能是我遗漏了一些相当明显的事情,但我很想能够一次责备其他事情。 :)
updateUser.js:
const updateUser = async (user) => {
console.log('user in updater:', user);
const updatedUser = await User.findOneAndUpdate(
{ _id: user._id },
{
$set: {
name: user.name,
email: user.email,
password: user.password,
ageRange: user.ageRange,
gender: user.gender,
accountCreatedAt: user.accountCreateAt,
meetingPlaces: user.meetingPlaces,
flags: user.flags,
tokens: user.tokens,
}
},
{ new: true },
(err, doc) => {
console.log(err, doc);
}
);
//placeholders until I get some kind of usable response from findOneAndUpdate
return {err: false, res: 'cat'};
};
终端输出:
console.log server/db/crud_Users/updateUser.js:8
user in updater: { _id: 5b1aa9a146b59048dd86dbc2,
name: 'test',
email: '24479981326297030000@test.com',
password: 'testtest',
ageRange: '1',
gender: 'Female',
accountCreatedAt: '2018-06-08T11:06:57-05:00',
meetingPlaces: [],
flags: [],
tokens: [],
homeLocations: [],
hostedEvents: [],
attendingEvents: [],
__v: 0 }
console.log server/db/crud_Users/updateUser.js:28
null null
console.log server/db/crud_Users/updateUser.js:32
updatedUser: null
【问题讨论】:
-
可能 err 和 doc 都为 null,因为您没有错误,并且您的集合中没有与
_id = user. _id匹配的文档,因此您的findOneAndUpdate不返回任何内容(这意味着 null) -
@Bentaiba 我也是这么想的,但是如果没有文档,它不应该在
err中返回一些东西吗?如果没有,err中会显示什么?
标签: javascript node.js mongoose jestjs