Req.next不是函数

时间:2019-05-28 09:05:48

标签: node.js firebase express

添加第二条帖子时,出现此错误:

  

类型错误:req.next不是函数。

我该如何解决?我正在将nodejs express与firebase实时数据库一起使用

app.post("/addpost", urlencodedParser, function(req, res, next ) {
    console.log(typeof(req.next))
    if (req.session.user) {
        var db = firebase.database();
        var post = db.ref().child("/posts");
        var key = firebase
            .database()
            .ref()
            .child("/posts")
            .push()
            .getKey();
        console.log(key);

        post.push({
            name: req.body.name,
            title: req.body.title,
            content: req.body.content,
            subtitle: req.body.subtitle
        });

        //    var array = [value];
        //    console.log(array);
        //    post.set(array);
        res.redirect("/liststories");
      next();
      //  next();
    } else {
        res.redirect("/login");
    }
});

1 个答案:

答案 0 :(得分:0)

Next用于必须将控制权传递给下一个中间件功能或路由的中间件。

说你有路线,

app.get('/', function (req, res) {
  res.send('hello world')
})

像这样的中间件

app.use('/', function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
})

所以您的代码应该是

app.post("/addpost", urlencodedParser, function(req, res) {
    // console.log(typeof(req.next)) <--- Since there is no property next in Request Object
    if (req.session.user) {
        var db = firebase.database();
        var post = db.ref().child("/posts");
        var key = firebase
            .database()
            .ref()
            .child("/posts")
            .push()
            .getKey();
        console.log(key);

        post.push({
            name: req.body.name,
            title: req.body.title,
            content: req.body.content,
            subtitle: req.body.subtitle
        });

        //    var array = [value];
        //    console.log(array);
        //    post.set(array);
        res.redirect("/liststories");
      next();
      //  next();
    } else {
        res.redirect("/login");
    }
});

您可以阅读有关中间件here

的更多信息