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

Node/Express not saving updated company information to DB

本文关键字:信息 公司 保存 数据库 更新 快递 节点      更新时间:2023-09-26

我是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函数时。

还要确保您的回调签名匹配function(error, result)的节点约定,以便获得您期望的结果值。