Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回带有余烬中字符串的记录_Javascript_Ember.js_Frameworks_Ember Data - Fatal编程技术网

Javascript 返回带有余烬中字符串的记录

Javascript 返回带有余烬中字符串的记录,javascript,ember.js,frameworks,ember-data,Javascript,Ember.js,Frameworks,Ember Data,我试图实现一个搜索功能,用户可以通过组件传递用户名返回其他用户。我遵循了余烬指南,并在我的路线文件中使用了以下代码: import Ember from 'ember'; export default Ember.Route.extend({ flashMessages: Ember.inject.service(), actions: { searchAccount (params) { // let accounts = this.get('store').pe

我试图实现一个搜索功能,用户可以通过组件传递用户名返回其他用户。我遵循了余烬指南,并在我的路线文件中使用了以下代码:

import Ember from 'ember';

export default Ember.Route.extend({
  flashMessages: Ember.inject.service(),
  actions: {
    searchAccount (params) {
      // let accounts = this.get('store').peekAll('account');
      // let account = accounts.filterBy('user_name', params.userName);
      // console.log(account);

      this.get('store').peekAll('account')
      .then((accounts) => {
        return accounts.filterBy('user_name', params.userName);
      })
      .then((account) => {
        console.log(account);
        this.get('flashMessages')
        .success('account retrieved');
      })
      .catch(() => {
        this.get('flashMessages')
        .danger('There was a problem. Please try again.');
      });
    }
  }
});
但是,此代码会引发以下错误:

“您不能将“[object]”作为id传递给商店的查找方法“

我认为
.find
方法的这个实现不再有效,我需要以不同的方式返回对象。我该怎么做呢?

DS.Store#find在现代版本的余烬数据中不是有效的方法。如果用户已经在商店中,您可以查看并过滤他们:

this.store.peekAll('account').filterBy('user_name', params.userName);
否则,您需要使用前面问题中使用的方法,并
查询
它们(假设您的后端支持过滤):

DS.Store#find在现代版本的余烬数据中不是有效的方法。如果用户已经在商店中,您可以查看并过滤他们:

this.store.peekAll('account').filterBy('user_name', params.userName);
否则,您需要使用前面问题中使用的方法,并
查询
它们(假设您的后端支持过滤):


您不能执行
。然后
通过
过滤


你不能做
。然后
peekAll
。因为双方都不会兑现承诺

searchAccount
中调用异步代码并返回结果在这里没有多大意义。因为
searchAccount
将在异步代码完成之前快速返回

this.get('store').findAll('account',{reload:true}).then((accounts) =>{
 if(accounts.findBy('user_name', params.userName)){
  // show exists message
 } else {
  //show does not exist message
 }
});
上面的代码将与服务器联系,获取所有结果,然后进行findBy筛选。所以过滤是在客户端完成的。您可以执行查询,而不是执行此操作

this.store.query('account', { filter: { user_name: params.userName } }).then(accounts =>{
 //you can check with length accounts.length>0
 //or you accounts.get('firstObject').get('user_name') === params.userName
 //show success message appropriately.
});

您不能执行
。然后
通过
过滤


你不能做
。然后
peekAll
。因为双方都不会兑现承诺

searchAccount
中调用异步代码并返回结果在这里没有多大意义。因为
searchAccount
将在异步代码完成之前快速返回

this.get('store').findAll('account',{reload:true}).then((accounts) =>{
 if(accounts.findBy('user_name', params.userName)){
  // show exists message
 } else {
  //show does not exist message
 }
});
上面的代码将与服务器联系,获取所有结果,然后进行findBy筛选。所以过滤是在客户端完成的。您可以执行查询,而不是执行此操作

this.store.query('account', { filter: { user_name: params.userName } }).then(accounts =>{
 //you can check with length accounts.length>0
 //or you accounts.get('firstObject').get('user_name') === params.userName
 //show success message appropriately.
});

你们说你们遵循了余烬指南,但它提到了在哪里使用查找方法
find
是一个私有方法,所以不要使用它。您说您遵循了ember指南,但它提到在哪里使用find方法
find
是一个私有方法,所以不要使用它。我尝试实现此代码,但它不断中断并抛出一个错误,读取
TypeError:this.get(…).peekAll(…)。then不是Class.searchAccount中的函数。我可以将两者分开,但运行filterBy无法捕获任何数据。你认为是什么导致了这些错误,我该如何着手修复它们呢?@d00medman啊,对了,
peekAll
没有回复承诺。我将修复我的示例解决方案。我尝试实现此代码,但它不断中断并引发错误,读取
TypeError:this.get(…).peekAll(…)。then不是Class.searchAccount中的函数。我可以将两者分开,但运行filterBy无法捕获任何数据。你认为是什么导致了这些错误,我该如何着手修复它们呢?@d00medman啊,对了,
peekAll
没有回复承诺。我将修复我的示例解决方案。您的第一个实现最终为我工作,允许我提取我正在查找的帐户并查询其属性。非常感谢你!您的第一个实现最终为我工作,允许我提取正在查找的帐户并查询其属性。非常感谢你!