gpt4 book ai didi

node.js - 使用 Node.js 和 Mongoose 将查询结果保存到模型/模式的属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:42 25 4
gpt4 key购买 nike

首先,我对 MEAN Stack 和 Node.js 还很陌生,所以不要介意:)

我知道 Node.js 中的所有这些函数都是回调函数并且是异步的,但由于 Node.js 被广泛使用,所以我认为的缺点可能根本不是缺点。让我定义我的问题;

假设您有一个用户的架构,其一个字段是对另一架构的引用。例如

PersonSchema = {
name: String,
...
...
...
projects : [{
type: Schema.ObjectId,
ref: 'Project',
required: true
}],
...
...
}

如何准确确保我从数据库获取特定项目并使用 mongoose 添加到用户的数据库?

我正在做的事情是这样的:

var proj = Project.findOne({"name":"The Manhattan Project"})

由于这些都发生在 app.post(...) 方法中,它们最终会发生,但不一定是在它们应该发生的时候发生。

var newUser = new User();
newUser.name = req.body.name;
newUser... = ...
newUser.projects = [proj.id];
...

newUser.save(callback function{})

当我用这个项目保存新的 User 对象时,它给了我一个错误,因为 proj 未定义(这是可以理解的,因为查询函数是一个回调函数),我现在确实不知道解决这个问题。

有人可以给我一些关于如何解决这个问题的想法,或者修复我的理解方式(如果它是错误的),或者至少将我推向正确的方向,以便我可以通过研究找到更多资源。

非常感谢!

最佳答案

FindOne 将回调作为其第二个参数。您不应该将项目分配给它的返回,您应该只调用它,然后在回调中继续您的使用逻辑...

Model.findOne({ age: 5}, function (err, doc){
// doc is a Document
// do things that happen after a sync retrieve in here...
});

关于node.js - 使用 Node.js 和 Mongoose 将查询结果保存到模型/模式的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36787801/

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