我对诺言并不十分熟悉,但是我在代码中实现了一些,并且确实希望在诺言被拒绝时从客户端出现警报。
这是我正在调用客户端的套接字
socket.emit('updateExistingItem',NewItem,(boolean) => {});
NewItem是一个包含我要发送的字段的对象。
这在我的stock.js文件中调用了一个诺言
export const updateExistingItem = (ItemObject) => {
return new Promise(async (resolve,reject) => {
try {
const updateExistingItem = `UPDATE console.inventory_items SET Description = '${(ItemObject.Description).replace(/\'/g,"")}',Location = '${(ItemObject.Location).replace(/\'/g,ModelNumber = '${(ItemObject.ModelNumber).replace(/\'/g,"")}'`
const response = await db(updateExistingItem,`Updating Item`);
resolve(response);
} catch (e) {
console.log("ERROR inventory.updateExistingItem: " + e);
reject(e);
}
});
};
如果客户端上的用户将信息放入与SQL调用不配合的NewItem对象中,则我需要一种方法来提醒该用户该信息尚未保存/更新。截至目前,这对用户来说有点误导,因为如果他们输入了被拒绝的内容,那么看起来好像从他们的末端成功了。
如果有人有出色的解决方案!谢谢。
编辑
这是我的sockets.js文件中的套接字
socket.on('updateExistingItem',async (ItemObject,callback) => {
try {
const results = await updateExistingItem(ItemObject);
if (results.affectedRows === 1) {
callback(true);
}
callback(false);
}
catch (error) {}
});
我的server.js文件中使用了SocketIO
var server = http.createServer(app);
const io = socketIO(server);
io.on('connection',(socket) => {
require('./middleware/sockets')(socket);
});
使用了4个不同的文件,所以这就是为什么我只放入与该特定调用实际相关的代码片段。