为什么我的Ember store.query()会查询所有内容?

时间:2017-06-23 20:44:20

标签: firebase ember.js emberfire

在Ember.js,

我正在尝试使用匹配的密钥执行所有帖子的查询。顺便说一下,这是在Firebase中。我的数据看起来像这样:

post example

我正在尝试根据posts属性查询特定的key(多个帖子可能具有相同的key属性值。)

所以这是我路线中的model(params)

路线/ stuff.js

export default Ember.Route.extend({
    model(params) {
        console.log(params.site_id);
        return this.store.query('post', { "key": params.site_id} );
    }
})

这是我试图在我的模板中显示我的帖子:

模板/ stuff.hbs

{{#each model as |post|}}
<div class="panel panel-default">
    <div class="panel-heading">
        Post Title: {{post.title}}
    </div>
    <div class="panel-body">
        <div class="col-lg-6 col-md-6 col-sm-6 margin-top-1em">
            <ul class="li-type-none">
                <li>Post Author: {{post.author}}</li>
            </ul>
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6">
            <ul class="nav nav-pills margin-top-small">
                {{#link-to 'posts.edit' post.id class='btn btn-success btn-s'}}Edit{{/link-to}}
                <button class="btn btn-danger btn-s" {{action 'deletePost' post}}>Remove Post</button>
            </ul>
        </div>
    </div>
</div>
{{/each}}


{{outlet}}

而且,好消息是我的posts会显示出来。坏消息是所有帖子都显示出来。即使是那些没有正确钥匙的人。为什么我的查询返回所有帖子而不是只返回具有正确键属性的帖子?

以下是一些可能有用的额外信息:

模型/ post.js

import DS from 'ember-data';

export default DS.Model.extend({
  author: DS.attr('string'),
  title: DS.attr('string'),
  content: DS.attr('string'),
  key: DS.attr('string'),
  date: DS.attr('date', { defaultValue() { return new Date(); }}),
  site: DS.belongsTo('site'),
  isLocked: DS.attr('boolean'),
  lockedContent: DS.attr('string'),
  metaData: DS.attr('string')
});

此外,以下是它在网址中的显示方式(请注意,key属性已传入网址)

http://localhost:4200/posts/-D2312jsj23u1828u42/stuff

谢谢!

1 个答案:

答案 0 :(得分:0)

您的查询规则因适配器而异。

这意味着此解决方案仅在您使用emberfire适配器时才有效。如果您没有使用emberfire适配器,您需要查看适配器的文档,以了解查询如何适用于您的特定适配器

export default Ember.Route.extend({
    model(params) {
        console.log(params.site_id);
        return this.store.query('post', {orderBy: 'author', equalTo: "Cameron Fife"} ).then(function(res) {
            return res
        });
    }
});