MySQL XDevAPI Как вернуть успешный статус

Разработка моего RestAPI с использованием XDEVAPI, говорящего с MySQL. Этот фрагмент кода работает для добавления новой записи,

myRecord.add = (newmyRecord, res) =>
{
    mysql.getSession(mydb)      // .getSession() is a Promise, returns a session
        .then
        (
            sess =>
            {
                sess.getSchema("myschema").getTable("mytable").insert(...).execute(row=>{console.log('inserted')}); 
                
                res.send(200);   // resulting "UnhandledPromiseRejectionWarning: TypeError: res.send is not a function"
                //return 200;    // Postman still shows "Sending" and Fiddler does not show status 200
            }
            
        );
}

Итак, мой вопрос: как отправить успешные 200 для завершения POST?

1 ответ

Решение

В execute() метод также возвращает Promise а в случае insert(), он не ожидает какого-либо обратного вызова, поэтому следующая строка никогда не будет вызвана:

console.log('inserted')

Единственные случаи, когда execute() ожидает, что обратные вызовы включены TableSelect а также CollectionFind. И мы постепенно уходим от этого вкуса API, поскольку теперь вы также можете обрабатывать наборы результатов, вызываяfetchOne() или fetchAll() на Result экземпляр, к которому это Promise решает (см. DocResult а также RowResult).

В любом случае этому ничего не мешает res.send(200)происходит вызов, и ничто неявно меняет API базовой инфраструктуры HTTP (которую вы, похоже, используете). Итак, упомянутая вами проблема, похоже, никоим образом не связана с соединителем MySQL X DevAPI.

TypeError: res.send is not a function

Вы, вероятно, игнорируете это res объект где-то перед его вызовом (и перед вызовом add()).

Наверное, это не сильно поможет, но это единственное, что я могу извлечь прямо сейчас из вашего сообщения.

Отказ от ответственности: я являюсь ведущим разработчиком MySQL X DevAPI Connector для Node.js

Другие вопросы по тегам