Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

    Ý nghĩa của next trong expressjs

    ExpressJS/Conect.IO
    0
    5
    4579
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Tieu dang van
      Tieu dang van last edited by Tieu dang van

      Em xem nhiều thằng nodejs mà vẫn thấy cái callback của nó trừu tượng quá các bác ạ :(.
      Các bác cho em hỏi cái next trong đoạn code kia có ý nghĩa gì nhỉ? Có hoặc k có nó sẽ ảnh hưởng thế nào tới hệ thống phía sau.

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

      1 Reply Last reply Reply Quote 0
      • nguyenquynhan
        nguyenquynhan last edited by

        Trong expressj, next() dùng để nhảy tới rout tiếp theo mà match với url khi clien request.
        Ví dụ trong đoạn code bên dưới:

        • nếu url: /users
          • rout * thực hiện visitCounter ++;
          • chạy tiếp vào rout /users
        • tương tự url: /products
          • vào rout * thực hiện visitCounter ++;
          • chạy tiếp vào rout /products
        app.all('*', function(req, res, next){
          visitCounter ++;
          next();
        });
        
        app.get('/users', function() {
          //...
        });
        
        app.get('/products', function() {
          //...
        });
        

        NHAN NGUYEN

        Tieu dang van 1 Reply Last reply Reply Quote 2
        • Tieu dang van
          Tieu dang van @nguyenquynhan last edited by

          @nguyenquynhan Cảm ơn bác ạ. Em hiểu cơ bản rùi ạ 🙂
          Có 1 phần nữa là nếu ấp dụng thế này:

          var attachDB = function(req, res, next) {
          req.db = db;
          next();
          };
          app.all('/', attachDB, function(req, res, next) {
          Home.run(req, res, next);
          });

          thì cái next sử tiếp dụng chạy khi url match với "/", vậy next chuyển đi tiếp có tác dụng gì nữa anh nhỉ?

          1 Reply Last reply Reply Quote 0
          • Truong Lee159
            Truong Lee159 last edited by

            Anh tham khảo thêm ở đây để hiểu rõ hơn : http://expressjs.com/en/guide/writing-middleware.html

            1 Reply Last reply Reply Quote 0
            • Kyllynk Leo
              Kyllynk Leo last edited by

              Để hiểu về next() trước tiên bạn cần hiều một web server không chỉ xử lý đoạn code của bạn viết mà trước đó nó xử lý một loạt các middlewares khác. Hiểu một cách trừu tượng thì phần code của bạn ở trong app.get(...) là middleware cuối cùng của một request.

              Khi một middleware được invoke thì nó block tiến trình xử lý request của bạn lại. Và hàm next trong một middleware sinh ra để thông báo cho express biết là mdw này xử lý xong rồi, nhảy sang mdw khác xử lý tiếp thôi...

              1 Reply Last reply Reply Quote 1
              • First post
                Last post