Nodejs - 正常回调与 exec [重复]

Posted

技术标签:

【中文标题】Nodejs - 正常回调与 exec [重复]【英文标题】:Nodejs - Normal callback vs exec [duplicate] 【发布时间】:2017-09-03 16:48:20 【问题描述】:

过去几天我一直在学习 nodejs,但偶然发现了一些我找不到任何好的解释的东西。

基本上它是关于exec 与普通回调,即(err, res) => ,如下所示:

Product.find().exec((err, products) => );

Product.find(, (err, products) => );

我找到了更多使用exec 的示例,但是当我读到exec 时,我真的不明白为什么。他们似乎都在对我做同样的事情。

所以,我的问题是,我应该使用一个而不是另一个,如果是,为什么?

编辑:

为了清楚起见,Product 是一个 MongoDB 模型/模式。像这样:

const Product = mongoose.model('Product', new Schema(
  title: type: String, default: '',
  description: type: String, default: '',
  price: type: Number, default: ''
));

【问题讨论】:

这不是关于 NodeJS 的问题。这是一个关于 Product 是哪个库的问题,以及使用该库 API 的两种不同方式之间有什么区别(如果有的话)。如果您不告诉我们它是什么库,我们将无法帮助您。我们可以猜测它是什么,但要求猜测并不是一个好主意。 (此外,请确保您在发布前仔细阅读库 API 文档作为尽职调查的一部分,并引用任何相关内容。) @T.J.Crowder Product 只是一个 mongodb 模型。 @T.J.Crowder 更新问题。 我不了解 mongodb,但在大多数其他数据库库中,.exec() 之类的东西允许您动态创建查询。例如:var query = Product(select); if (something) query.where(condition); query.exec(callback) Mongoose - What does the exec function do?@slebetman 重复 - 如果您愿意履行职责,我已经投票决定关闭(前提是您同意)。 【参考方案1】:

只需参考以下答案Mongoose - What does the exec function do?

exec 通常用于执行动态创建的查询。

以下是一个简单的代码,它提供了一个可以使用 exec 的想法。

employee.find(, function (err, docs) 
    // statements
);

employee.find().populate("designation").exec(function (err, docs) 
    // statements
);

【讨论】:

如果它是重复的(而且很好找),不要回答,评论链接到 dupetarget 的效果,以便拥有投票关闭权的人可以关闭它。 @T.J.Crowder 实际上我发布的是一个例子。你在链接上找不到。为了理解回调和执行之间的区别,我添加了链接。 @LibuMathew:SO 对“重复”的定义是“那里的答案是否回答了这个问题:?”您指出的问题绝对正确(再次,做得好)。有效使用重复是 SO 模型的重要组成部分。如果您认为该问题应该比那里的答案更好回答,但一切都意味着发布答案 - 那里。无论如何,愉快的编码。

以上是关于Nodejs - 正常回调与 exec [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从每个回调调用中获取异步nodejs值[重复]

回调函数中的Nodejs闭包和res对象[重复]

如何使用 curl 与 exec nodejs

Nodejs child_process 模块

nodejs exec让shell保持活力?

尝试使用 NodeJS 创建与 MySQL 数据库的连接时 PHP Exec 挂起