【发布时间】:2018-12-08 03:54:54
【问题描述】:
我正在学习 mongoDB 教程,讲师建议我使用以下代码来验证用户在我的数据库中的输入。我已经定义了一个用户模型,它只接受一个名字,看起来像这样:
it("Can create a subdocument", (done) => {
const joe = new User({
name: "joe",
});
joe.save()
.then(() => User.findOne({ name: "joe"}))
.then((user) => {
assert(user.name === "joe")
done();
});
}
但是,我不明白为什么这里需要使用 User.findOne 函数。为什么我们不能直接使用:
joe.save().then((user) => {
assert(user.name === "joe")
done();
});
感谢您的帮助!
【问题讨论】:
-
如果要验证条目,意味着您需要确保数据确实正确插入到数据库中。如何做到这一点,保存后,您需要使用 findOne 直接将数据查找到数据库中,然后验证您获取的数据是否与您打算插入的数据匹配。
-
谢谢!我想我明白了——findOne 实际上是在 MongoDB 中找到一个文档,并且不只是返回我们刚刚创建的 User 实例,对吗?
-
是的,正确的,如果你不使用 findOne,它只会检查内存中创建的实例,而不是在 mongo 中创建的实例,因此验证不正确.. 我将其发布为答案,你能接受它作为正确答案吗?谢谢:)
标签: database mongodb validation promise nosql