表达路由器没有调用get请求返回空obj

时间:2017-10-24 09:50:15

标签: node.js express get routes

我正在呼叫来自角4的请求。我用过expressjs路由器。我的来电没有来到我的路由器功能。如果我使用虚拟ID,它工作正常。 这是我的前端代码

getOnlineUser(){
console.log('nline --')
return new Promise((resolve, reject) => {
  this.http.get(this.url+'/chat/getonlineusers')
    .map(res => res.json())
    .subscribe(res => {
      resolve(res);
    }, (err) => {
      reject(err);
    });
}); }

这是我的expressjs路由器代码

router.get('/getonlineusers', function(req, res, next) {
 console.log('here it is---+=============---------- ')
 // the above console not working
 OnlineUsers.find({}, function (err, Users) {
  console.log(Users)
if (err) return next(err);
res.json(Users);
});
});

如果我使用像/getonlineusers/:id

这样的虚拟ID,这个路由器工作正常

服务器文件

app.use('/chat', chat);

可能是错误

2 个答案:

答案 0 :(得分:0)

关于您不需要的客户端,将您的请求包含在承诺中,  更好的方法是使用toPromise()中的rxjs

import 'rxjs/add/operator/toPromise';

getOnlineUser() {
   return this.http.get(`{this.url}/chat/getonlineusers`)
     .map(res => res.json())
     .toPromise();
 }

// back seems ok
router.get('/getonlineusers', function (req, res, next) {
  OnlineUsers.find({}, function (err, users) {
    if (err) return next(err);

    res.json(users);
  });
});

答案 1 :(得分:0)

我从前端拨打 / getonlineusers ,在 / getonlineusers 之前有一条名为 /:room 的路线,我的ajax呼叫正在进行到 /:room 而不是 / getonlineusers

所以我在 /:room 上面设置 / getonlineusers 路线,那工作