【问题标题】:Mongoose cannot findById in async.map function?Mongoose 在 async.map 函数中找不到 findById?
【发布时间】:2015-02-12 07:44:40
【问题描述】:

以下代码可以正常工作:

Field.findById(fieldIdArray[0], function(err, field){
  console.log(field);
  return next();
});

以下代码给出了 erroruncaught TypeError: Invalid select() argument

async.map(fieldIdArray, function (fieldId, callback) {
  console.log(fieldId);
  Field.findById(fieldId, function (err, field){
    if(err) callback(err);
    if(!field) callback('Field not found.');
    field.remove(function (err){
      if(err) callback(err);
      callback(null, fieldId);
    });
  }, function (err, results){
    if(err) next(new Error('Something went wrong with deleting fields.'));
    return next();
  });
});

console.log 控制台注销了正确的 fieldId,但是为什么 Field.findById 会报错?

【问题讨论】:

  • 完全错误:未捕获的类型错误:无效的 select() 参数。必须是字符串或对象。我尝试 .toString() 不幸的是它产生了同样的错误

标签: node.js mongodb asynchronous express mongoose


【解决方案1】:

您将 3 个参数传递给 Field.findByIdfieldId(可能是一个 id)和 2 个函数。第一个函数被解释为可选的fields 参数,但正如错误所说,该参数必须是字符串或对象。您可能打算将额外的函数作为第三个参数传递给 async.map,因为它需要 3 个参数,而您只传递了 2 个。

【讨论】:

  • 啊,天哪,我不知道为什么我没看到。谢谢!
猜你喜欢
  • 2018-09-16
  • 2018-06-11
  • 2020-03-28
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 2021-04-29
  • 2019-07-15
  • 2017-10-13
相关资源
最近更新 更多