如何使用 Mongoose 进行查询,然后拿该文档做其他事情?

Posted

技术标签:

【中文标题】如何使用 Mongoose 进行查询,然后拿该文档做其他事情?【英文标题】:How do I query using Mongoose, but then take that document to do other things? 【发布时间】:2011-08-14 10:05:03 【问题描述】:
User.findOne(, function(err, doc)
   //do stuff with "doc" here.
);

这就是我目前的做法。但是,如果我想拿“doc”,然后做点什么。

User.findOne(, function(err, doc)
   //do stuff with "doc" here.
);
runAnotherFunction(doc.name)
doc...

如何将“doc”从“function”部分中取出?

【问题讨论】:

【参考方案1】:

Node 是事件驱动的,它不是您可能习惯的程序代码。在 mongoose 可以完成检索记录之前,已经可以很好地通过调用 findOne。需要对文档进行的任何操作都应该在回调中进行(“函数”部分)。

【讨论】:

那么,我不能将“doc”的内容从回调部分中取出吗?如果我需要获取该人的性别,并在回调之外使用它.... @TIMEX 看看Step,这会强制在 Node 中进行序列化执行。 John,有没有让我思考 node.js 方式的教程?我现在正在考虑程序性,我不知道如何编写非程序性。【参考方案2】:

你可以试试“step”, https://github.com/creationix/step

这样更容易控制逻辑流。

例如看这个:

async nodejs querying and processing results

【讨论】:

Step 适用于您需要控制流的情况,但请记住,如果您过度使用它,那么使用事件驱动语言的意义何在。 @JohnD 我同意,我不太了解 NodeJS

以上是关于如何使用 Mongoose 进行查询,然后拿该文档做其他事情?的主要内容,如果未能解决你的问题,请参考以下文章

更新 mongodb 文档,如果该文档存在,则创建

Mongoose 中的 Model.findById() - 异步/等待 [重复]

该文档不存在,它不会出现在查询或快照中吗?云防火墙

该文档不存在,也不会出现在查询或快照中,但结构相同的文档有效

Mongoose 参考文档的 TTL 过期

在word里用vba编写一个按钮程序,目的是全文查找指定文字然后将该文档内的指定文字更改为红色。