这对 res.locals 来说是不好的做法吗?(Node.js,表达)

eek*_*eek 0 javascript node.js express

我想知道像此代码示例中那样使用 res.locals 是否是不好的做法,或者如果您这样使用它是否会出现任何问题:

app.use((req, res, next) => {
    const session = req.cookies.session
    if (session) {
        db.admin.auth().verifySessionCookie(session, true)
            .then((decodedData) => {
                res.locals.userId= decodedData.uid
                next();
            })
            .catch(() => {
                res.locals.userId = false
                next();
            })
    } else {
        res.locals.userId = false
        next();
    }

app.get("/", async (req, res) => {
    console.log(res.locals.userId)
    res.render("home.hbs")
})
Run Code Online (Sandbox Code Playgroud)

基本上我:

  1. 我验证了 app.use 中的会话 cookie(我正在使用 firebase auth)
  2. 我设置了 res.locals.userId = userId
  3. 然后使用我刚刚在app.get中设置的本地

(我需要这样做,因为我的视图中需要 userId,否则我需要运行 verifySessionCookie 函数 2 次才能获取我想避免的 userId)

jfr*_*d00 5

res.locals被明确设计为一个地方,供您放置请求处理的后续部分想要/需要使用的内容,并且通常用于模板渲染。所以,这正是它的用途。

我想知道像此代码示例中那样使用 res.locals 是否是不好的做法,或者如果您以这种方式使用它是否会出现任何问题

不会有什么不好的事情发生。这正是目的res.locals。请参阅文档参考以进一步确认。