0

使用与 MySQL 对话的 XDEVAPI 开发我的 RestAPI。这段代码用于添加新记录,

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?

4

1 回答 1

1

execute()方法还返回 a Promise,并且在 的情况下insert(),它不期望任何类型的回调,因此永远不会调用以下行:

console.log('inserted')

execute()期望回调的唯一实例是 onTableSelectCollectionFind. 而且我们正在慢慢摆脱那种 API 风格,因为现在您还可以通过调用fetchOne()fetchAll()在解析为的Result实例上处理结果集(请参阅和)。PromiseDocResultRowResult

无论如何,没有什么可以阻止该res.send(200)调用的发生,也没有任何隐式更改底层 HTTP 框架(您似乎正在使用)的 API。因此,您提到的问题似乎与 MySQL X DevAPI 连接器无关。

TypeError: res.send is not a function

您可能res在调用它之前(和调用之前add())在某个地方覆盖了该对象。

这可能没有太大帮助,但这是我现在可以从您的帖子中提取的唯一内容。

免责声明:我是 MySQL X DevAPI Connector for Node.js 的主要开发人员

于 2020-07-13T09:26:17.127 回答