使用XDEVAPI与MySQL对话开发我的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?
execute()
方法还返回一个Promise
,在insert()
的情况下,它不期望任何类型的回调,因此永远不会调用以下行:
console.log('inserted')
execute()
期望回调的唯一实例是TableSelect
和CollectionFind
。我们正在慢慢摆脱API风格,因为现在您还可以通过在Promise
解析到的Result
实例上调用fetchOne()
或fetchAll()
来处理结果集(请参见DocResult
和RowResult
(。
在任何情况下,都不会阻止res.send(200)
调用的发生,也不会隐式地更改底层HTTP框架(您似乎正在使用(的API。因此,您提到的问题似乎与MySQL X DevAPI连接器无关。
TypeError: res.send is not a function
在调用res
对象之前(以及调用add()
之前(,您可能在某个地方覆盖了该对象。
这可能没有多大帮助,但这是我现在能从你的帖子中提取的唯一内容。
免责声明:我是Node.js 的MySQL X DevAPI连接器的首席开发人员