2016-07-26 10 views
3

Ich habe ein Problem den Weg für diese URL zu machen:Express Routing mit params Filter aus emberJs kommenden

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

Im Moment ich dieses versucht:

Im Server

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

In der Front

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); 
    }); 

Aber wenn ich meinen Server mit Postbote testen habe ich dieses Ergebnis:

Cannot GET /api/tests?filter%5Bcodeid%5D=eeee

Jemand eine Ahnung von hat, wie diese verwalten?

Edit:

Ich benutze die json-api

https://github.com/ethanresnick/json-api

Und das ist meine Server-Datei mit allen meinen Routen:

https://github.com/DidelotK/QcmServerEmber/blob/Express_problem_stack/app/controller/express-server.js

+0

Bindungspfad ist '/ api/tests','? Filter% 5Bcodeid% 5D = eeee' ist Anfrageparameter. Sie können '/ api/test/filter-: codeid' binden. –

+0

Die gleichen Dinge, es funktioniert nicht –

Antwort

0

ich die Lösung schließlich finden mein Problem, hier:

https://github.com/ethanresnick/json-api/issues/64

So ist der Fehler in Ember war, und es funktioniert zu machen, änderte es diese:

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); 
}); 

Um dies:

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); 
}); 
-1

Try Code unten

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!'); 
}); 
+0

Die gleichen Dinge funktioniert der Filter nicht, ich habe nur das es funktioniert –

2

Was ist Ihr versuchen, ist zu tun express Abfrage genannt, Express doc, so dass Ihre Route haben, sollten nicht, dass zusätzliche Parameter, es so etwas wie dieses

app.get('/test', (req, res, next) => { 
    console.log(req.query); 
    res.status(200).json(req.query);  
}); 

aussehen sollte, und wenn u Anfrage für diese Route senden als ..

http://localhost:3000/test?a=5&b=3

Verwandte Themen