루프에서 일련의 MySQL 삽입을 실행 한 다음 모두 완료 한 후에 수행해야합니다. 그러나 콜백을 넣을 위치가 확실하지 않습니다. -MySQL 쿼리가 순차적으로 실행되지 않음 (NodeJS)
for (var q=0; q<things.length; q++)
{
thing
.create({
active_time: time
rule: rule
next: next_object,
percentage: object.percent,
enabled: 1,
})
.complete(function(err, newSchedule) {
console.log('thing added successfully');
})
}
나는 넣을 수 없습니다. complete
섹션은 모두 후에 발생해야하기 때문에 섹션. 진행하기 전에 모두 완료되었는지 어떻게 확인할 수 있습니까?
편집 : 나는 AsyncJS를 사용하기 시작했으나 완료되기 전에 MySQL 쿼리가 콜백으로 간주됩니다. 여기에 새 코드는 다음과 같습니다
if (valid) {
async.each(arrayOfObjects, tools.submitThing, function()
{
console.log("finished submissions")
});
및
exports.submitThing = function(thingObject, callback) {
thing
.create({
active_time: time
rule: rule
next: next_object,
percentage: object.percent,
enabled: 1,
})
.complete(function(err, newSchedule) {
console.log('thing added successfully');
})
callback();
}
서버 콘솔을 보여줍니다 메시지 "완료 제출"MySQL의 삽입 전에 레지스터. 이 문제를 해결할 수있는 방법은 없나요?
나는 이것을 시험해 보았지만, 끝나지 않았더라도 MySQL 쿼리가 작업과 콜백을 즉시 시작할 것이라고 생각했다. 이 경우인가요? – erythraios
'.complete' 함수 안에서'callback()'을 호출하지 말고 대신 호출하면된다. '.complete (기능 (ERR, newSchedule) {() '일이 성공적으로 추가' \t CONSOLE.LOG, \t 콜백(); }!' – pauljz
가 속임수를 썼는지 그 주셔서 감사합니다. – erythraios