DB를 쿼리하고 데이터를 삽입하는 동안 배열 periods
을 반복하는 데 어려움을 겪고 있습니다. 내가 직면하고있는 문제는 마지막 줄에서 5 번째로 볼 수 있습니다. 최종 db.queryPromise
이 호출되지 않습니다.루프 내 약속 연결
문제가있는 곳의 하단에서 5 줄을 참조하십시오.
// db.js
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : ****,
password : ****,
database : ****,
});
module.exports = connection;
module.exports.queryPromise = function (args) {
return new Promise((resolve, reject) => {
connection.query(args, (err, rows, fields) => {
if (err) return reject(err);
resolve(rows);
});
});
};
module.exports.connectPromise = new Promise((resolve, reject) => {
connection.connect(err => {
if (err) reject(err);
resolve();
});
});
// app.js
const db = require('../config/db');
const periods = ['1h','12h','24h','1w','1m','3m','1y','all'];
const sqlCarIds = `SELECT id FROM car_models ORDER BY id DESC LIMIT 200;`;
return db.queryPromise(sqlCarIds)
.then((rows) => {
const car_ids = [];
for (let i = rows.length - 1; i >= 0; i--) {
car_ids.push(rows[i].car_id);
};
for (let i = periods.length - 1; i >= 0; i--) {
const sqlSnapshot = `SELECT price FROM car_models;`;
db.queryPromise(sqlSnapshot)
.then(([row]) => {
if (!row) {
throw new Error('API call found nothin');
}
const highPrice = row.high;
const sqlInsert = `INSERT into price_cache (high) VALUES (` + highPrice` +)`;`
console.log(sqlInsert); // logs correctly formed query
db.queryPromise(sqlInsert)
.then(() => {
console.log('this should fire'); // doesn't fire
});
});
}
});
달성하고자하는 것은 무엇입니까? * 왜 * 당신이이 일을하는지, 그리고 현재 코드에 어떤 문제가 있는지를 설명하십시오. –
목적은 대용량 데이터베이스에서 가격 데이터를 덮어 쓰는 작은 데이터베이스로 데이터를 이동하는 것입니다. 이렇게하면 서버가 모든 필터링을 수행하는 동안 사용자에 대해 더 빠른 쿼리를 수행 할 수 있습니다. 오류가 발생하지 않는 행과 코드가 잘못 된 행은 주석 처리했지만 sqlInsert 쿼리는 호출되지 않습니다. – Nick
@Nick'db.queryPromise' 함수 안에'console.log (err)'을 사용하여 쿼리로 인해 에러가 없는지 확인하십시오. –