我一直在网上寻找答案,但我找不到答案,也许我不是在问正确的问题,但在这里。
所以我使用express,mongodb和ember cli构建一个CRUD webapp,到目前为止我可以将数据保存到我的mongodb数据库(/ events / new)并显示我的事件(事件/所有)但是我在访问时似乎被卡住了个人事件我的理想网址是/ events /:eventname ...
我知道我从服务器获得了正确的结果,而且我只获得了一个,但是在ember控制台中,我的模型显示了我的所有记录,而且我似乎无法从我的模型中呈现实际内容到屏幕。如果我碰巧去了localhost:300 / event / XXXX我的ember控制台显示了两个我想要的记录和一些虚拟的记录,其中XXXX作为ID,其余字段未定义...我是否需要创建一个寻找单一记录的新路线?或者有没有办法使用我定义的相同路线来查找事件/所有中的所有记录?如何获取屏幕上显示的数据?当我访问/ events / eventname时,为什么会看到我的所有记录? 我在这里遵循最佳做法吗?
快递:
app.get('/api/events', function(req,res) {
eventsModel.find({},function(err,docs) {
if(err) {
res.send({error:err});
}
else {
// we only want to display the current events,
// so we filter throught them and return
// only the current ones
var current = [];
var today = new Date();
var tomorrow = today.setDate(today.getDate() - 1);
docs.forEach(function(item){
if(item.date >= tomorrow){
// console.log('new');
current.push(item);
}
});
res.send({events:current});
console.log('/api/events');
}
});
});
app.get('/api/events/:name', function(req, res){
console.log(req.url);
console.log('/api/events/event');
eventsModel.findOne({name: req.params.name},function(err,docs) {
if(err) {
res.send({error:err});
}
else{
res.send({event:docs});
}
});
});
Ember Router.js
Router.map(function() {
this.route('events', function() {
this.route('new');
this.route('update');
this.route('all');
this.route('event', { path: ':name' });
});
});
Ember events.event Routes
export default Ember.Route.extend({
model: function(params) {
this.store.find('event', params.name);
}
});
Ember events.all Template
{{#if model}}
{{#each model as |event| }}
<h2>{{#link-to 'events.event' event.name}}{{event.name}}{{/link-to}}</h2>
<p>{{event.date}}</p>
<p>{{event.location}}</p>
<p>{{event.address}}</p>
<a href={{event.url}}>Read More</a>
{{/each}}
{{else}}
Ember events.event Template
{{#each model as |item|}}
{{item.name}}
{{/each}}
{{outlet}}
转到/ events / eventname时我的服务器响应是:
{ _id: 55d317d23281dfb23e9ecaa8,
url: 'http://gmail.com',
timestamp: Tue Aug 18 2015 07:32:34 GMT-0400 (EDT),
description: 'Another Address',
address: '123 Street',
long: 34.234,
lat: 12.123,
zip: 'h4t3y5',
city: 'Here',
location: 'Somewhere',
date: Mon Aug 31 2015 20:00:00 GMT-0400 (EDT),
name: 'Two Words',
__v: 0 }
数据准确无误,具体取决于我点击的帖子。
感谢您的帮助!
答案 0 :(得分:0)
假设您正在使用RESTAdapter,您的服务器响应格式错误。您可以阅读它预期的格式here,但您的响应应该如下所示:
{
"event": {
"id": "55d317d23281dfb23e9ecaa8",
"timestamp": "Tue Aug 18 2015 07:32:34 GMT-0400 (EDT)",
...
}
}