NodeJS (ExpressJS) Необработанное отклонение TypeError: обратный вызов не является функцией

108
10

За последние несколько дней я изучал использование Angular 6 и NodeJSExpressJS). Для этого я решил создать front-end с Angular 6 (o, который представляет собой форму) с целью передачи информации в базу данных PHPMyAdmin с помощью API, созданного с помощью NodeJS. Как вы могли видеть из заголовка, я получаю следующую ошибку, когда я пытаюсь отправить информацию о моих формах:

"Необработанное отклонение TypeError: обратный вызов не является функцией"

Код, который я использовал для почтового действия, был взят из другого функционирующего и аналогичного API, база данных получает question_id и user_id, но не будет регистрировать ответы на вопросы (что является конечной целью). Без furthur ado вот код, который нужно получить и разместить:

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'});
});

Для справки "ответ" означает ответ, а "libelle" означает ярлык. Заранее спасибо за помощь!

спросил(а) 2021-01-25T14:53:25+03:00 4 месяца, 4 недели назад
1
Решение
76

Правильный синтаксис

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

});

он работает:

ответил(а) 2021-01-25T14:53:25+03:00 4 месяца, 4 недели назад
63

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

Похоже, вы передаете свой обратный вызов в качестве первого параметра (вместо response). Это должно быть 2-е.

Вероятно, вы хотели:

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

ответил(а) 2021-01-25T14:53:25+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема