gpt4 book ai didi

javascript - mongoose findOneAndUpdate 为 err 和 doc 返回 null(使用 Jest)

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

我正在使用 Mongoose 的 findOneAndUpdate 方法,但似乎无法从中获得任何有用的信息。我试过使用调用它返回的查询(在 updatedUser 中),但它返回 null;我也试过包含回调参数,但是当我这样做时,我为 errdoc 返回了 null

上下文:我正在使用 Jest 构建测试套件,并为此功能编写测试。我已经在测试套件之外的应用程序中使用了该函数,虽然我更改了函数的某些部分,但除了添加回调参数外,我没有更改 findOneAndUpdate 调用中的任何内容。

预期行为:'err' 或 'doc' 都不会返回 null,所以我至少知道发生了什么。

我曾使用过 Mocha,正在学习 Jest,并且我发现了 Jest 可以做的其他一些有趣的事情。我从经验中知道,这很可能是我遗漏了一些相当明显的东西,但我希望能够一次责怪其他东西。 :)

更新用户.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

最佳答案

谢谢你把问题解释得这么好。MongoDB官方文档中有提到herefindOneAndUpdate更新集合中与请求匹配的第一个文档并返回原始文档。

我认为 errdoc为空,因为您要更新的文档在您的集合中不存在。文档中没有提到 findOneAndUpdate 的行为是什么如果没有与查询匹配的文档。所以,我试图更深入地研究它。

我在文档中看到(您可以了解更多信息 here )如果参数 upsert没有提到,需要 false作为默认值。我在 P.S. 看到这里部分如果 upsertfalse并且文档不存在,而不是 doc将是 null .

关于javascript - mongoose findOneAndUpdate 为 err 和 doc 返回 null(使用 Jest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50764989/

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