这是我第一次进行适当的申请。但是我遇到了一个问题,我一生无法找到解决方法。 下面的代码显示了我遇到问题的函数的代码。
该代码用于将损坏记录在资产上,以选中要记录的损坏类型。通常检查多个。 (记录一个损坏的工作正常)。我尝试解决的方法是将检查到的损坏存储到数组中,然后遍历该数组,对数组中的每个元素发出发布请求。
在终端中返回的查询是正确的,但是在postgres日志文件中,我看到情况并非如此。如果我提交5种不同的损害赔偿,则表示正在实施5种损害赔偿,但是有些损害被多次注册,而其他损害则根本没有注册。
我已经完全解决了这个问题。遍历每个元素并为每个元素发出发布请求是一个坏主意吗?还是我应该怎么解决呢?如果我在浏览器中使用断点并逐步执行代码,则所有损害均已正确注册,因此可能存在我未在此处发现的异步问题?
// submit form with selected damages
$('#registerDamagesForm').submit(function (e) {
e.preventDefault();
let = selectedDamage = $("input:checkbox[name=damage_type]:checked").map(function () {
return $(this).val();
}).get();
// loop over the array and call postDamage
// for each element in array
selectedDamage.forEach(function (selectedDamage) {
let sendObject = {};
sendObject["damage_type"] = selectedDamage;
sendObject["poi_id"] = current_id;
console.log("send " + Object.values(sendObject));
postDamage(sendObject);
})
});
// post request using promises
function postDamage(damage) {
console.log("post " + Object.values(damage));
$.post({
type: 'POST',
url: '/api/pois/skade',
data: damage
})
.done(function (skade) {
// do stuff with the returned damages
})
};
// routes
router.post('/damage', (req, res) => {
queries.createDamage(req.body)
.then(damage => {
res.json(damage);
})
.catch(function (err) {
console.error('get comment error ' + err);
});
});
// make sql
createDamage(damage) {
const sql = db.insert(damage).returning('*').into('damages');
console.log(sql.toString());
return sql;
},