Nodejs return data cho reactjs.



  • Tình hình là mình đang research và setup project reactjs - nodejs đơn giản
    Mình gặp vấn đề chổ này, mong ace chỉ giáo.
    Có cái view => gọi tới route => từ route gọi lên controller lấy data.
    Khi log ra thì server đã lấy được rồi, vấn đề là làm sao để controller return data về client để show lên được (ajax thì nó luôn show pending).

    Code của mình:

    1. client
      axios.get(http://localhost:8080/categories)
      .then(response => {
      console.log(response);
      })
      .catch(err => {
      console.log('err');
      });

    2. route
      app.route('/categories')
      .get(function(req, res) {
      CategoriesController.index(res);
      });

    3. controller
      index() {
      Categories.find({})
      .then((lists) => {
      console.log(lists);
      return lists;
      })
      .catch((error) => {
      console.log('error');
      });
      }

    Ở server (file controller) khi log thì đã có data, nhưng client không lấy được data đó.
    Ace help với!
    Cảm ơn.



  • Bạn nên dùng socket.io để dùng reactime nhé!
    video của mình dùng reac time sử dụng bằng socket.io: https://www.youtube.com/watch?v=wLpVmlK-jFg&list=PL5Op9pxYdADb5XLM0WQPd8Y7eClzd32NK&index=4&t=4s



  • 
    
    
    //client
    axios.get(http://localhost:8080/categories)
        .then(response => {
            console.log(response);
        })
            .catch(err => {
                console.log('err');
            });
    
    //route
    
    app.route('/categories')
        .get(function (req, res) {
            CategoriesController.index(res);
        });
    
    //controller
    
    index() {
        Categories.find({})
            .then((lists) => {
                console.log(lists);
                return lists;
            })
            .catch((error) => {
                console.log('error');
            });
    }
    
    
    
    

    Quả thật không nhìn ra chiêu số...!!!!


  • Espresso

    Mình nghĩ phải là:
    app.route('/categories')
    .get(function (req, res) {
    res.json(CategoriesController.index());
    });

    //controller

    index() {
    Categories.find({})
    .then((lists) => {
    console.log(lists);
    return lists;
    })
    .catch((error) => {
    console.log('error');
    return Array();
    });
    }



  • ban chuyen sang dung async await di .
    moi thu se ngon hon va ket qua tra ve cung de su dung nua



  • Theo mình nghĩ ở phí server bạn cần trả về response.send('data') để phía client còn hứng code của bạn mới chỉ log nó ra thôi (^_^)


Log in to reply