使用Ember和MongoDB查找FindRecord

时间:2015-08-19 12:09:45

标签: javascript node.js mongodb ember.js

我一直在网上寻找答案,但我找不到答案,也许我不是在问正确的问题,但在这里。

所以我使用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 }

数据准确无误,具体取决于我点击的帖子。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

假设您正在使用RESTAdapter,您的服务器响应格式错误。您可以阅读它预期的格式here,但您的响应应该如下所示:

{
    "event": {
        "id": "55d317d23281dfb23e9ecaa8",
        "timestamp": "Tue Aug 18 2015 07:32:34 GMT-0400 (EDT)",
        ...
    }
}