2016-11-14 61 views
3

我的數據模型如下所述。我想編寫一個查詢,將返回:Ember&Firebase數據查詢採用自下而上的方式嗎?

  • 審查的名單在給定的部門在給定的大學

所以特定類型的訓練評論的

  • 列表
  • 列表從部門開始,這是我試圖做的:

    查詢部門的評論:

    var department = this.store.findRecord('department',params.department_id) 
        var reviews = this.store.query('review' {'faculty.department':department}); 
    

    查詢特定的培訓:

    var design = this.store.query('training',{'faculty.department':department, filter:{type:'ATC Design Course (DQOC)'}}); 
    

    查詢所有教師在給定的大學工作的評論:

    var college = this.get('college'); 
    var cid = college.getProperties("id").id 
    var reviewQuery = store.query('review',{'faculty.department.college._id':college._id}); 
    var trainingQuery = store.query('training',{'faculty.department.college._id':college._id}); 
    

    無論是查詢給我結果,我期待的。看起來他們都評估查詢,查找給定模型類型的所有結果,例如下面的查詢返回所有類型的所有培訓模型。

    var design = this.store.query('training',{'faculty.department':department, filter:{type:'ATC Design Course (DQOC)'}}); 
    

    我需要幫助重寫查詢,以便他們將返回正確的結果。這種情況下的最佳做法是什麼?我應該如何實施?

    是否可以從評論 - >教師 - >部門 - >大學開始查詢模型底部的應用程序?

    或者我可以採用自頂向下的方法,並用一些嵌套for循環結構查詢所有部門,教師等,但如果可能的話,想要以其他方式。這個查詢如何看起來像?

    我會很感激任何幫助。

    院校:

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

    部門

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

    學院:

    export default DS.Model.extend({ 
        profile_image:DS.attr('string'), 
        firstname: DS.attr('string'), 
        lastname: DS.attr('string'), 
        salutation: DS.attr('string'), 
        email: DS.attr('string'), 
        department: DS.belongsTo('department'), 
        reviews: DS.hasMany('review'), 
        training: DS.hasMany('training') 
    }); 
    

    評論

    export default DS.Model.extend({ 
        faculty: DS.belongsTo('faculty'), 
        courseName:DS.attr('string'), 
        internalDate:DS.attr("date"), 
        externalDate:DS.attr("date"), 
        funDate:DS.attr("date"), 
        recertificationDate:DS.attr("date") 
    }); 
    

    培訓

    export default DS.Model.extend({ 
        type: DS.attr('string'), 
        faculty: DS.belongsTo('faculty'), 
        date:DS.attr("date") 
    }); 
    

    FIRST EDITS問題 我怎樣才能得到一個給定的大學所有的評論? VAR rquery = store.query( '審查',{faculty.department.college._id:college._id})

    var rquery = store.query('review', {faculty.department.college : college}) 
    

    給我一個語法錯誤。

    SyntaxError: quality-online/components/quality-chart.js: Unexpected token (50:44)

  • +0

    錯誤是因爲'faculty.department.college'。你不能用'.'來傳遞參數。如果你想發送一些參數到後端,你可以把它作爲'college_id:college._id'發送並處理服務器端代碼中的參數。 – Sumit

    +0

    感謝您的關注。我懂了。問題是Review模型沒有college屬性。評論屬於隸屬於大學部門的教師。 所以問題是有沒有一種方法來查詢父對象這種方式? –

    +0

    可以很容易地告訴您是否可以共享模型對象。從理論上講,因爲這裏有一個層次結構,所以我猜測複習對象必須保存其父母的身份,講師和指導者將擁有部門的身份,而部門必須掌握關於學院的數據。從我能理解的情況來看,當你從下到上的一對一關係。我假設你現在的模型是複習,然後使用'this.get('model.instructor.department.college')'應該帶你到大學對象 – Sumit

    回答

    0

    使用faculty.department.college._id時,查詢功能開始尋找你的函數faculty對象的定義,並試圖訪問的department.college._id從它的價值,並使用faculty.department.college._id作爲參數鍵返回的值。這是問題。由於看起來faculty對象沒有被定義,所以這也不是傳遞參數的正確方法。

    如果你想發送一些參數到後臺發送它作爲'college_id'或如上面評論中提到的'faculty.department.college'。唯一的條件是它應該是一個字符串,並且在服務器端代碼處理得當。

    +0

    我只注意到它實際上不能正常工作。 var design = this.store.query('training',{'faculty.department':department,filter:{type:'ATC Design Course(DQOC)'}}); 或var improving = this.store.query('training',{'faculty.department':department,filter:{type:'Improving Your Online Course(IYOC)'}}); 都返回相同的審查對象:( –

    +0

    只是爲了確認,你檢查或調試,如果你的服務器端代碼發送不同或相同的對象,當你的查詢執行 – Sumit

    +0

    我該怎麼做? –