Mongoose无法在async.map函数中找到BYId?

时间:2014-12-13 20:25:19

标签: node.js mongodb asynchronous express mongoose

以下代码可以正常使用:

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

以下代码给出了erroruncaught TypeError:无效的select()参数

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会抛出错误?

1 个答案:

答案 0 :(得分:3)

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