NodeJS(ExpressJS)未处理的拒绝TypeError:回调不是函数

时间:2018-07-25 09:37:20

标签: javascript node.js database angular express

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

  

未处理的拒绝TypeError:回调不是函数

我用于发布操作的代码是从另一个功能相似的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'});    
});

仅供参考,“响应”表示响应,“自由”表示标签。 预先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

正确的语法是

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

        }); 

正在工作:

答案 1 :(得分:1)

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

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

您可能想做:

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