Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用来自emberJs的params筛选器快速路由_Node.js_Express_Ember.js - Fatal编程技术网

Node.js 使用来自emberJs的params筛选器快速路由

Node.js 使用来自emberJs的params筛选器快速路由,node.js,express,ember.js,Node.js,Express,Ember.js,我在创建此url的路由时遇到问题: http://localhost:3000/api/tests?filter%5Bcodeid%5D=eeee 当时我试着这样做: 在服务器中 app.route('/api/tests?filter[codeid]=:param') .get((req, res) => { console.log('It works'); res.status(200).send({ msg: 'It works' });

我在创建此url的路由时遇到问题:

http://localhost:3000/api/tests?filter%5Bcodeid%5D=eeee

当时我试着这样做:

在服务器中

app.route('/api/tests?filter[codeid]=:param')
  .get((req, res) => {
    console.log('It works');
    res.status(200).send({
      msg: 'It works'
    });
  });
在前面

this.store.query('test', { filter: { codeid: code } })
    .then(test => {
      if(test.get('firstObject')){
        console.log(test.get('firstObject').get('id'));
        console.log('exist');
      }
    })
    .catch(err => {
      console.log(err);
    });
但当我用postman测试服务器时,我得到了以下结果:

无法获取/api/tests?过滤器%5Bcodeid%5D=eeee

有人知道怎么处理这个吗

编辑:

我使用json api

这是我的服务器文件,包含我的所有路由:

尝试下面的代码

var express = require('express');
var app = express();
app.use(require('body-parser').urlencoded({extended: false})); // to provide req.params.param

app.route('/test')
  .get((req, res) => {
    console.log('It works');
    res.status(200).json({ // I think you doesn't want send text
      msg: 'It works'
    });
  });

app.route('/test/filter[codeid]=:param')
  .get((req, res) => {
    console.log('It works', req.params.param);
    res.status(200).send({
      msg: 'It works',
      code: req.params.param
    });
  });

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
}); 

您试图做的是所谓的快速查询,所以您的路由不应该有额外的参数,它应该是这样的

app.get('/test', (req, res, next) => {
    console.log(req.query);
    res.status(200).json(req.query);    
});
当你发送该路线的请求时,比


我终于找到了问题的解决方案,在这里:

因此,错误在ember中,为了使其正常工作,我更改了以下内容:

this.store.query('test', { filter: { codeid: code } })
.then(test => {
  if(test.get('firstObject')){
    console.log(test.get('firstObject').get('id'));
    console.log('exist');
  }
})
.catch(err => {
  console.log(err);
});
为此:

this.store.query('test', { filter: { simple { codeid: code } } })
.then(test => {
  if(test.get('firstObject')){
    console.log(test.get('firstObject').get('id'));
    console.log('exist');
  }
})
.catch(err => {
  console.log(err);
});

绑定路径是
/api/tests
?过滤器%5Bcodeid%5D=eeee
是请求参数。您可以绑定
/api/test/filter-:codeid
。相同的东西它不工作相同的东西过滤器不工作,我只有它工作的东西