簡體   English   中英

如何從數據庫返回數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM