【问题标题】:NodeJS (ExpressJS) Unhandled rejection TypeError: callback is not a functionNodeJS(ExpressJS)未处理的拒绝类型错误:回调不是函数
【发布时间】:2019-01-02 01:54:55
【问题描述】:

在过去的几天里,我一直在学习使用 Angular 6NodeJS(以及 ExpressJS)。为此,我决定使用 Angular 6(有一个表单)创建一个前端,目的是通过以下方式将信息来回传递到我的 PHPMyAdmin 数据库使用我用 NodeJS 创建的 API。 正如您可能从标题中看到的那样,当我尝试提交表单信息时出现以下错误:

未处理的拒绝类型错误:回调不是函数

我用于发布操作的代码取自另一个功能相似的 API,数据库接收 question_id 和 user_id 但不会注册问题答案(这是最终目标)。 事不宜迟,这里是获取和发布的代码:

const config = require('../config/config');
const knex      = config.db.knex;
const async     = require('async');


class TestModel {        
  getQuestions(callback) {
        knex('question')
        .select('id', 'libelle')
    .orderBy('id', 'asc')
        .then((data) => {
            callback(data);
        });
    }


  addResponse(reponse, callback) {
      knex('reponse')
      .insert({
          id_user : 1,
          id_question : reponse.id,
          libelle: reponse.answer,
      }).then((data) => {
          callback(data);
        });
  }        
}


module.exports = new TestModel();

这是其余的:

app.post('/quiz', function(req, res, next){
    var answers = req.body;

    console.log(answers)

    for(var i = 0; i<answers.length; i++)
        {
            var obj = answers[i];
            Test.addResponse((obj,result) => {

            });                
        }        
    res.json({reponseserveur:'True'});    
});

仅供参考,“reponse”表示响应,“libelle”表示标签。 提前感谢您的帮助!

【问题讨论】:

    标签: javascript node.js database angular express


    【解决方案1】:
    Test.addResponse((obj,result) => {})
    

    看起来您将回调作为第一个参数(而不是 response)。应该是第二个。

    你可能想这样做:

    Test.addResponse(res, (obj,result) => {})
    

    【讨论】:

      【解决方案2】:

      正确的语法是

              Test.addResponse(obj, (result) => {
      
              }); 
      

      它正在工作:

      【讨论】:

      • 完美!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      相关资源
      最近更新 更多