なぜこの一連の約束が乱れるのですか?最後の.thenブロックの "object"オブジェクトは、実行時には未定義です。ES6 Node-MySQLを使用しているときに異常終了する約束
.then(posts => {
getConnection().query("SELECT * FROM shows", (err, rows) => {
if (err) throw new Error(err)
else return { posts: posts, shows: rows }
})
})
で
new Promise(function(resolve, reject) {
getConnection().query("SELECT * FROM blog", (err, rows) => {
if (err) reject(err)
else resolve(rows)
})
}).then(rows => {
let posts = []
for (let i = 0; i < rows.length; i++) {
posts.push({
id: rows[i].id,
...
})
}
return posts
}).then(posts => {
getConnection().query("SELECT * FROM shows", (err, rows) => {
if (err) throw new Error(err)
else return { posts: posts, shows: rows }
})
}).then(object => {
let posts = object.posts
let post_container = { my: [], your: [] }
post_container.my = posts.filter(x => x.section === "my")
post_container.your = posts.filter(x => x.section === "your")
return post_container
})
2番目のクエリは、それが狂っている場所です。すべての変数は 'getConnection()。query(" SELECT * FROM "は' 'ここにログを置くべきかどうか1"をクエリのコールバックに指定し、 '' let posts = object ''の下に 'here 2'ここで2は一貫してここの前にあります。 – Connorelsea
サイドノート:あなたのコードで 'rows #'を' posts'に変換する 'Array#map'を使ってみてください。 –