2014-12-03 55 views
1

我一直在努力工作幾個小時,以獲得工作在我的新sails.js項目上的最簡單的populate()查詢。問題是填充的字段總是有一個空數組。我深入瞭解這些例子,所以我認爲我沒有語法錯誤,但也許我疲憊的眼睛不讓我看到。我無法使用populate()工作在我的sails.js項目上

這裏有兩個模型+方法多數民衆贊成使得查詢:

型號系:

attributes: { 
    id: { 
     type: 'integer', 
     primaryKey: true 
    }, 
    name: { 
     type: "string", 
     required: true 
    }, 
    shortName: { 
     type: "string" 
    }, 
    schoolName: { 
     model: 'Schools' 
    }, 
    courses: { 
     collection: 'Courses', 
     via: "departmentId" 
    } 
}, 

示範課程:

attributes: { 
    id: { 
     type: "integer", 
     primaryKey: true 
    }, 
    name: { 
     type: "string", 
     required: true 
    }, 
    shortName: { 
     type: "string" 
    }, 
    departmentId: { 
     model: "Departments" 
    } 
}, 

最後,進行調用的方法:

getDepartmentsBySchool: function(schoolName, callback){ 
    Departments.find({schoolName: schoolName}).populate("courses").exec(function(error, departments){ 
     if(error){ 
      console.log("Departments could not be found"); 
      return callback(error, []); 
     } else{ 
      console.log(departments.length + " departments found"); 
      return callback(null, departments); 
     } 
    }); 
} 

結果:

courses: [] 

總是。

我使用MySQL,所以適配器是sails-mysql。任何類型的指針都會非常感激,這樣我就不必使用這個框架了。

編輯:

改變遷移到 「改變」 的結果如下:

http://tinypic.com/r/9kv9ev/8

+0

下面的答案能解決您的問題嗎?如果是的話,這通常被認爲是一種良好的做法,並建議您接受正確的答案。如果沒有,讓我知道,以便我們可以解決它 – 2014-12-05 18:46:37

+0

嗨mandeep,非常感謝您花時間嘗試它(我不知道有問題的答案,沒有收到電子郵件通知) 不幸的是,它並沒有做到這一點,所以我又回到了問題上來進一步調試它。 – Albert 2014-12-10 20:03:34

回答

0

我測試了你在我提供的代碼示例。由於我想測試部門和課程之間的關聯,我沒有將shoolName保留爲另一個集合的引用,而是將其保留爲字符串。一切似乎都很好。課程得到完美填充。你可能想檢查一件事。使用類型關聯時:

schoolName: { 
     model: 'Schools' 
    }, 

schoolName必須包含來自學校表的記錄的id。我希望你能正確地設置它。

有時它可能是一個與節點模塊sails-mysql有關的問題。你可以嘗試重新安裝帆 - mysql模塊

npm uninstall sails-mysql 
npm cache clear 
npm install sails-mysql 

讓我知道這是否有效。

+0

我懷疑它可能是npm安裝的sails-mysql,但它不影響任何東西。 我有我的基本項目上GitHub(主):https://github.com/albertkim/Quaestio 目錄'sql'包含我的初始化腳本。如果一切順利進行,我相信我的問題可能是如何建立我的表格? – Albert 2014-12-10 20:09:24

+0

@ user2651202你可以嘗試一件事。由於它是一個測試項目和初始設置,因此您可以在首次提升帆時將遷移設置保持爲「更改」或「丟棄」。一旦所有表格都由風帆創建,然後從下一次將設置恢復爲「安全」。它位於config/models.js – 2014-12-11 07:13:34

+0

嗨Mandeep,你可能已經帶領我找到了一些東西。我將遷移設置更改爲自動,並且啓動時出現控制檯錯誤。相關行似乎是: 「...您的SQL語法錯誤...附近'SELEC FROM'課程'在第1行的'課程' 現在,這個消息中有一個錯字:SELEC代替選擇。 – Albert 2014-12-14 02:30:13

相關問題