【问题标题】:Nodejs - Normal callback vs exec [duplicate]Nodejs - 正常回调与 exec [重复]
【发布时间】: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 重复 - 如果您愿意履行职责,我已经投票决定关闭(前提是您同意)。

标签: mongodb mongoose


【解决方案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 模型的重要组成部分。如果您认为该问题应该比那里的答案更好回答,但一切都意味着发布答案 - 那里。无论如何,愉快的编码。
猜你喜欢
  • 2016-10-07
  • 2017-04-10
  • 2012-09-08
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
相关资源
最近更新 更多