为什么我的 Ember store.query() 查询所有内容?
Why does my Ember store.query() query everything?
在Ember.js,
我正在尝试查询所有具有匹配键的帖子。顺便说一句,这是在 Firebase 中。我的数据看起来像这样:
我正在尝试根据 key
属性 查询特定 posts
(多个帖子可能具有相同的 key
属性 值)。
这是我的 model(params)
在我的路线
route/stuff.js
export default Ember.Route.extend({
model(params) {
console.log(params.site_id);
return this.store.query('post', { "key": params.site_id} );
}
})
这里是我尝试在我的模板中显示我的帖子:
template/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
将会显示。坏消息是显示所有帖子。即使是那些没有正确钥匙的人。为什么我的查询返回所有帖子而不是仅返回具有正确键属性的帖子?
这里有一些可能有用的额外信息:
model/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')
});
此外,这是它在 URL 中的样子(注意 key
属性被传递到 url)
http://localhost:4200/posts/-D2312jsj23u1828u42/stuff
谢谢!
您的查询规则因适配器而异。
这意味着此解决方案仅在您使用 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
});
}
});
在Ember.js,
我正在尝试查询所有具有匹配键的帖子。顺便说一句,这是在 Firebase 中。我的数据看起来像这样:
我正在尝试根据 key
属性 查询特定 posts
(多个帖子可能具有相同的 key
属性 值)。
这是我的 model(params)
在我的路线
route/stuff.js
export default Ember.Route.extend({
model(params) {
console.log(params.site_id);
return this.store.query('post', { "key": params.site_id} );
}
})
这里是我尝试在我的模板中显示我的帖子:
template/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
将会显示。坏消息是显示所有帖子。即使是那些没有正确钥匙的人。为什么我的查询返回所有帖子而不是仅返回具有正确键属性的帖子?
这里有一些可能有用的额外信息:
model/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')
});
此外,这是它在 URL 中的样子(注意 key
属性被传递到 url)
http://localhost:4200/posts/-D2312jsj23u1828u42/stuff
谢谢!
您的查询规则因适配器而异。
这意味着此解决方案仅在您使用 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
});
}
});