有點新的節點和打字稿,所以需要一點幫助。 使用節點/快遞/ postres作爲後端和https://github.com/typeorm/typeorm作爲ORM其中有一個功能,打開連接,看起來像:節點路由響應沒有設置
export declare function createConnection(): Promise<Connection>;
所以,當我想用在我的路線,它看起來就像是:
this.app.get("/test", function (req, res) {
createConnection()
.then(conn => {
console.log("Start connection...");
let repo = conn.getRepository(entForum);
let obj = repo.find();
conn.close().catch(err => { });
return obj;
})
.then(data => {
res.send(data);
});
console.log("Done");
});
和控制檯輸出爲:
Done
GET /test/ 200 51.053 ms - 1133
Start connection...
的問題是我收到「無法設置頭髮送之後。」。 它看起來像在console.log(「DONE」);之後發送響應。然後再承諾一次。 我在這裏做錯了什麼?
如果你在那裏歸還整個承諾會怎樣?並刪除console.log(「完成」);. '返回createConnection()。然後//等等等等' 很確定,因爲你沒有返回承諾,它會在數據庫調用完成之前完成請求。 – Steveadoo
不知道在發送它們之後無法設置標題位,但是您的承諾在完成之後執行,因爲您沒有正確地將它們綁定在一起。你需要添加一個最終的'.then(()=> console.log(「DONE」))' – Paarth
這個錯誤通常是我異常處理異步操作引起的,但如果這真的是你所有的代碼,在這裏沒有看到任何明顯的問題,因爲只有一個地方發送迴應。你確定你真正的路由處理程序中沒有更多的代碼嗎?你確定問題是由這個路由處理程序引起的嗎?僅供參考,在正常的路由處理程序中,您不會聲明'next'參數,因爲它只能用於中間件,而不能用於端點處理程序。 – jfriend00