识别 Ember 中的 retrieve-record-object 的种类
Recognize the kind of retrieve-record-object in Ember
我正在构建一个 crud-route-mixin
,我在其中定义路由的默认功能和操作。
其中一个函数将查询对象作为参数;在我执行调用的操作中:
_doSomething(query) {
query.then( result => {
//do something default with this result
})
}
路由调用不同kind of methods的_doSomething
函数。例如:
路线A
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findAll('paper'));
}
}
路线B
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findRecord('blog-post'));
}
}
我想知道,是否可以检索查询对象的方法名称或类型?所以我可以做这样的事情(伪代码):
_doSomething(query) {
query.then( result => {
if (query.getRetrieveMethodName() === 'findAll') {
//do something default with this array result
} else if (query.getRetrieveMethodName() === 'findRecord') {
//do something default with this single record result
}
})
}
P.S。检查有效载荷是单个记录还是数组不是一个选项,因为我也需要在错误处理中进行这种区分。
从 findRecord
或 findAll
或 query
返回的查询对象是 PromiseObject
或 PromiseArray
(如果您使用 ember-data ).所以你可以像这样检查它的类型(即使出现错误):
import DS from 'ember-data';
_doSomething(query) {
if (query instanceof DS.PromiseObject) {
// single result
}
else if (query instanceof DS.PromiseArray) {
// array
}
else {
throw new Error('Expected ember-data proxy object');
}
// Do something useful
}
但是向控制器提供所需的数据不是更简单吗?
_doSomething(query, modelName, isArray) {
query.then( result => {
//do something default with this result
});
}
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findRecord('blog-post'), 'blog-post', false);
}
}
我正在构建一个 crud-route-mixin
,我在其中定义路由的默认功能和操作。
其中一个函数将查询对象作为参数;在我执行调用的操作中:
_doSomething(query) {
query.then( result => {
//do something default with this result
})
}
路由调用不同kind of methods的_doSomething
函数。例如:
路线A
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findAll('paper'));
}
}
路线B
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findRecord('blog-post'));
}
}
我想知道,是否可以检索查询对象的方法名称或类型?所以我可以做这样的事情(伪代码):
_doSomething(query) {
query.then( result => {
if (query.getRetrieveMethodName() === 'findAll') {
//do something default with this array result
} else if (query.getRetrieveMethodName() === 'findRecord') {
//do something default with this single record result
}
})
}
P.S。检查有效载荷是单个记录还是数组不是一个选项,因为我也需要在错误处理中进行这种区分。
从 findRecord
或 findAll
或 query
返回的查询对象是 PromiseObject
或 PromiseArray
(如果您使用 ember-data ).所以你可以像这样检查它的类型(即使出现错误):
import DS from 'ember-data';
_doSomething(query) {
if (query instanceof DS.PromiseObject) {
// single result
}
else if (query instanceof DS.PromiseArray) {
// array
}
else {
throw new Error('Expected ember-data proxy object');
}
// Do something useful
}
但是向控制器提供所需的数据不是更简单吗?
_doSomething(query, modelName, isArray) {
query.then( result => {
//do something default with this result
});
}
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findRecord('blog-post'), 'blog-post', false);
}
}