首页 > 解决方案 > express-flash-messages 在 promise 函数中不起作用

问题描述

我正在使用 express js 中的 express-flash-messages 包在页面上显示消息,一切都很好,但是在代码中的 promise 函数内部,req.flash 没有在会话中设置值,可以请任何人建议有什么问题?

main.js

var session = require('express-session');
var flash = require('express-flash-messages')
var app = express();


app.use(session({
key: 'user_id',
secret: 'testcookie',
saveUninitialized: true,
resave: false,
cookie: {
        maxAge: 1000 * 60 * 60 * 2
    },
}))


app.use(flash());

路线/index.js

    (async () => {

        var promise = users_model.create({fullname: req.body.inputFullName, email_id: req.body.inputEmailId, mob_number: req.body.inputContactNumber, dateandtime: now})

        promise.then(() => {

            console.log('Record Inserted successfully!!');

            req.flash('success', 'Form Submitted!'); // not getting set


        }).catch((err) => {

            req.flash('error', 'An error occured, Please try again.'); // not getting set

        })


    })()


    req.flash('success', 'Form Submitted!');  // works here 

标签: node.jsexpress

解决方案


你应该返回或等待承诺:


 (async () => {

        var promise = users_model.create({fullname: req.body.inputFullName, email_id: req.body.inputEmailId, mob_number: req.body.inputContactNumber, dateandtime: now})

        // or return instead of await 
        await promise.then(() => {

            console.log('Record Inserted successfully!!');

            req.flash('success', 'Form Submitted!'); // not getting set


        }).catch((err) => {

            req.flash('error', 'An error occured, Please try again.'); // not getting set

        })


    })()

推荐阅读