如何在Socket IO事件循环中处理Knex更新查询

时间:2018-12-14 07:01:21

标签: mysql node.js socket.io async-await knex.js

我的节点服务器中有一个套接字侦听器,它在毫秒时间内接收到套接字事件,并且正在使用MySql Client使用knex.js更新事件数据中接收到的状态。但有时由于事件循环更快而不会更新。

我尝试了异步等待,但是它没有帮助我。这是我的代码。请帮我解决这个问题。

socket.on("orderUpdate", function(message) {
    setImmediate(function(){
        orderModel.updateOrderStatus(message);
    })
 });

以下是我的updateOrderStatus方法。

updateOrderStatus: async function (data) {
    try {
        return await knex(table_name)
            .where('order_id', data.order_id)
            .update({
                status: data.status,
            })
    } catch (e) {
        return e;
    }
}

1 个答案:

答案 0 :(得分:0)

1。确保您正在获取套接字事件。使用socket acknowledgment确定。

2。打印查询日志,以检查更新是否成功。

socket.on("orderUpdate", async function (message, callback) {
    let resp = await orderModel.updateOrderStatus(message);
    return callback(resp);
});

socket.emit("orderUpdate", message, (resp) => {
    console.log("resp : ", resp);
});