gpt4 book ai didi

javascript - 如何从数据库中选择一堆行,如果数据不存在,则在数据库中创建行,然后在JS中选择?

转载 作者:行者123 更新时间:2023-11-29 16:24:20 25 4
gpt4 key购买 nike

以下代码是我的 Node 服务器的代码。

要求:每当 api 收到来自客户端的请求时,如果记录存在,它应该从数据库中选取数据。如果数据不存在,则应将新记录插入数据库,然后将数据返回给客户端。

router.post('/api/getSelectedEmployeeInfoToUpdate', (req, res)=>{
let obj = req.body;
if (Object.keys(obj).length === 0) {
res.status(400).send({'value':'invalid Parameters'});
}
const tempVal = '';

obj.forEach(emp => {
names += "'" + emp.name + "'" + ',';
});

let jsonArray=[];

obj.forEach(emp=>{

// Insert some dummy values
var insertQueryString = `INSERT INTO rostertable_v2(name, month, year, day1, day2, day3,
day4, day5, day6, day7) VALUES ('${req.body.name}','${req.body.month}',${req.body.year},
'${tempVal}','${tempVal}','${tempVal}',
'${tempVal}','${tempVal}','${tempVal}')`;

var sql_query = "SELECT * FROM `rostertable_v2`"
+" WHERE `name` = '" + emp.name +"'"
+" AND `month` = '" + emp.month +"'"
+" AND `year` = " + emp.year;

connection.query(sql_query, (error, rows, fields)=>{
//callback
if(!!error){
console.log('Error in query...' + error);
res.send({'success':0})
}else{
if (rows.length > 0) {
console.log('/getEmployeeInfoToUpdate: Successfull query');
// res.send(rows);
jsonArray.push(rows);
console.log(jsonArray);

}else{
//insert an empty record into the `rostertable`
connection.query(insertQueryString, (error, result)=>{
//callback
if(!!error){
console.log('Error in query...' + error);
res.send([{'success':0}]);
}else{
if (result.affectedRows > 0) {
connection.query(sql_query, (error, rows, fields)=>{
//callback
if(!!error){
console.log('Error in query...' + error);
res.send({'success':0})
} else {
// res.send(rows);
jsonArray.push(rows);
}
});
}
}
});
}
}
});

});// obj.forEach

console.log('Json Array is : ' + jsonArray);
res.send(jsonArray);
});

我的问题:我无法得到结果!我使用 let jsonArray=[]; 来推送查询结果。但在我使用 jsonArray 将数据发送给用户时,它没有返回任何内容?

我不明白这是什么原因!

但是我这样做jsonArray.push(rows)然后数据以下面的方式存储

[ [ RowDataPacket {
name: 'Andy',
month: '0',
year: 2019} ]]`

如何解决此问题

非常感谢任何帮助

最佳答案

一旦数组被推送,就发送资源。

jsonArray.push(rows);

//Now send res
res.send(jsonArray);

在您的情况下,您在将数据填充到数组之前编写了 res.send 。由于 Node 的异步性质,它不会等待将数据填充到数组中。

关于javascript - 如何从数据库中选择一堆行,如果数据不存在,则在数据库中创建行,然后在JS中选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54333450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com