【问题标题】:Newbie Emberfire Querying新手 Emberfire 查询
【发布时间】:2017-05-18 12:00:23
【问题描述】:

我遇到了简单的 EmberFire 查询问题。 我想通过名称找到一个部门对象,然后根据下面描述的数据模型将其添加到一个大学部门。

我收到的错误是:

TypeError:无法读取未定义的属性“pushObject”

我做错了什么?

              store.query('college', {orderBy: 'name', equalTo: "CAS"}).then(function(c){
              var college = c
              console.log(college);
              dept.set('college',college);
              college.get('departments').pushObject(dept);
              dept.save();
              college.save()

            }
          )

部门在哪里:

  store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){
              // var dept = depts.get('content')[0]
              var dept = depts})

这是我的完整查询:

    findOne(){
      var store = this.store
      // store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){
      store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){
          // var dept = depts.get('content')[0]
          var dept = depts
          console.log(dept);
          //Add it to college
          store.query('college', {orderBy: 'name', equalTo: "CAS"}).then(function(c){
              var college = c//.get('content')[0]
              console.log(college);
              dept.set('college',college);
              college.get('departments').pushObject(dept);
              dept.save();
              college.save()

            }
          )
      })
},

部门:

export default DS.Model.extend({
   name: DS.attr('string'),
   faculty:DS.hasMany('faculty'),
   college: DS.belongsTo('college')
});

大学:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  departments: DS.hasMany('department')
});

编辑:来自查询的 c 对象:

Class
__ember1484688357664
:
"ember632"
__ember_meta__
:
Meta
__firebaseCleanup
:
()
_super
:
ROOT()
_updatingPromise
:
null
content
:
(...)
get content
:
GETTER_FUNCTION()
set content
:
SETTER_FUNCTION(value)
isLoaded
:
true
isUpdating
:
false
links
:
EmptyObject
manager
:
Class
meta
:
EmptyObject
query
:
Object
store
:
Class
type
:
quality-online@model:college:
__proto__
:
Class

【问题讨论】:

  • 您确定“c”正在从查询中返回一个对象吗?你应该先检查一下。 console.log(c) 然后检查它是否打印到控制台。我可能会错过部门。
  • @talves 请检查更新的答案。我打印了'c'。这是一个“大学”类型。如果没有与之关联的部门,我认为它应该有一个空的部门数组?
  • 对不起,你可能想试试 console.log(college.get('departments')),它应该是未定义的。也许你的意思是college.get('department') 单数。
  • 请看大学模型。我在那里有“部门”。
  • 我已将我的建议放在答案中,如果您正在寻找,请告诉我。我不确定你的 college 对象返回时是什么样子,所以我在做假设。

标签: ember.js firebase emberfire


【解决方案1】:

您应该尝试类似以下的操作:

store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(c) {
  return c.get('firstObject');
}).then(function(college) {
  departments = college.get('departments');
  departments.pushObject(dept);
  ...
});

【讨论】:

  • 当然,你需要检查是否返回null。
  • 它有效。太感谢了。在哪里可以了解有关使用 emberfire 查询数据的更多信息?
  • 我通常只使用文档或查看开源项目,但也有教程。我也在 youtube 上看到了一些演示文稿。很高兴它对你有效。 :)
【解决方案2】:

talves 的答案在大多数情况下都会起作用,但它有点难看。这是解决这个问题的普遍接受的方法,因为EmberFire 并没有真正提供更好的东西。但是,这是一个可以满足您所有查询需求的附加组件。您可以查看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多