[英]How do i return data from a database?
我無法訂閱服務器端存儲過程返回的 observable。
我試圖在控制器上調用存儲過程,就像這樣
alerts: async ( req, res, next ) => {
try{
let id_user = req.params.id
let res_array = []
return await Database.knex.raw( 'CALL getAlerts( ? )', [id_user] ).then( response => {
response[0][0].map( res => {
res_array.push(res)
})
return res_array
} )
} catch ( error ) {
return next( error );
}
}
這通過使用在組件上調用
this.api.get('alerts/'+ this.auth.user.id).subscribe( (alerts: any) => {
console.log("subscribing", alerts)
})
通過路線
router.get('/alerts/:id', controller.alerts);
SP 返回正確的值,但是當我嘗試訂閱以在組件上訪問它們時,我看不到控制台日志,也無法對那個 observable 執行任何操作。 為什么是這樣? 我盡可能多地閱讀有關該主題的內容,但似乎仍然無法確定問題所在。 謝謝你們。
這不是您從 Express.js 返回內容的方式。 您應該重構為:
alerts: (req, res, next) => {
const { id } = req.params
Database.knex.raw('CALL getAlerts( ? )', [id])
.then(response => response[0][0])
.then(res.send)
.then(() => next())
.catch(next)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.