Javascript 节点/Express未将更新的公司信息保存到数据库

Javascript 节点/Express未将更新的公司信息保存到数据库,javascript,database,node.js,express,Javascript,Database,Node.js,Express,我是Node/Express的新手,正在尝试实现更新公司信息的块。我有许多console.log语句跟踪整个块中的变量,在最后一行保存之前,一切似乎都运行得很好。我到底做错了什么 // Edit company metric information editMetrics: function(link, form, cb) { Companies.findOne({ permalink: link }, function (err, company) { if (err)

我是Node/Express的新手,正在尝试实现更新公司信息的块。我有许多
console.log
语句跟踪整个块中的变量,在最后一行保存之前,一切似乎都运行得很好。我到底做错了什么

// Edit company metric information
  editMetrics: function(link, form, cb) {
    Companies.findOne({ permalink: link }, function (err, company) {
      if (err)  return done(err);

      // Iterate through form fields
      for(var field in form) {
        console.log(field);  // Looks great

        if(typeof(company.operational[field]) !== 'undefined') {
          company.operational[field].unshift({
            timestamp: new Date(),
            value: form[field]
          });
        }

        if(typeof(company.user_metrics[field]) !== 'undefined') {
          company.user_metrics[field].unshift({
            timestamp: new Date(),
            value: form[field]
          });
        }

        if(typeof(company.economics[field]) !== 'undefined') {
          company.economics[field].unshift({
            timestamp: new Date(),
            value: form[field]
          }); 
        }      
      }

      console.log(company); // Looks great

      // Save & redirect to updated profile
      company.save(cb());  // For some reason this isn't saving
    });
  },
回调:

CompanyModel.editMetrics(link, req.body, cb = function(error, result) { 
    res.redirect('/portfolio/' + link); 
  });

问题是最后一行:

company.save(cb())

应该是:

company.save(cb)

基本上,当需要将函数指针传递给save函数时,您正在执行回调并将结果传递给save函数


还要确保回调签名与
函数(错误,结果)
的节点约定相匹配,以便获得所需的结果值。

什么类型的
公司
?你能发布相关代码吗?另外,
cb()
返回什么?我们在这里遗漏了很多信息。这似乎是对如何将回调作为参数传递给另一个异步函数的典型误解。尝试
company.save(cb)
而不是
company.save(cb())
并告诉我们它是否仍然不起作用,或者您是否不理解差异。不起作用/不理解差异抱歉。公司是一个庞大的对象。抱歉,我将尝试添加更多信息…因此,我根据您的答案在原始问题中添加了更多信息。我将最后一行更改为
company.save(cb)
,并在上面发布了我的
cb()
函数。删除回调的cb=部分,只使用匿名函数。我删除了
cb=
,但似乎没有任何更改。好的,然后尝试在回调中记录错误和结果值,看看是否发生了错误。