问题描述
我正在 altv.mp GTA V 平台上编码,但遇到了问题;
当我尝试插入一些值时,我得到未定义等。 (查询正确)
我在那里使用了 await 和 async 以及 promise,这次我得到了 Promise : Pending
如何获取insertID
let promise = new Promise((resolve,reject) => {
con.query(query,params,(err,result) => {
if (err)
return reject(err);
resolve(result.insertId);
});
});
let res = await promise;
console.log(res);
return res;
}
export function createveh(player,type,idbytype,model) {
let posX = player.pos.x;
let posY = player.pos.y + 5;
let posZ = player.pos.z + 1;
let rotX = player.rot.x;
let rotY = player.rot.y;
let rotZ = player.rot.z;
let dimension = player.dimension;
try {
const newVehicle = new alt.Vehicle(model,posX,posY,posZ,rotX,rotY,rotZ);
let dimension = newVehicle.dimension;
let primaryColor = newVehicle.primaryColor;
let dirtLevel = newVehicle.dirtLevel;
let engineHealth = newVehicle.engineHealth;
let lockstate = newVehicle.lockState;
let modkit = newVehicle.modKit;
newVehicle.numberPlateText = license();
let plate = newVehicle.numberPlateText;
let secondaryColor = newVehicle.secondaryColor;
alt.emitClient(player,'vehicle:createveh',newVehicle);
let sqlID;
let query = "INSERT INTO vehicle SET model = ?,type = ?,owner = ?,posX = ?,posY = ?,posZ = ?,rotX = ?,rotY = ?,rotZ = ?,dimension = ?,primaryColor = ?,dirtLevel = ?,engineHealth = ?,lockState = ?,modKit = ?,plate = ?,secondaryColor = ?";
let args = [model,rotZ,dimension,primaryColor,dirtLevel,engineHealth,lockstate,modkit,plate,secondaryColor];
return (async () => {
return await asynqQuery(query,args);
})();
} catch (err) {
console.log(err);
}
//return insertId;
}```
解决方法
mysql2
模块有 inbuilt promise support。由于您的用例并不真正需要您自己的承诺实现,因此您需要做的就是:
export async function createveh(player,type,idbytype,model) {
...
try {
...
const [result] = await con.query(query,args);
// extract id from result and return it
} catch (err) {
console.log(err);
}
}