2014-04-03 53 views
4

最新的水線現在支持協會。下面是一個一對多水線關聯,更改外鍵?

// A user may have many pets 
var User = Waterline.Collection.extend({ 

    identity: 'user', 
    connection: 'local-postgresql', 

    attributes: { 
    firstName: 'string', 
    lastName: 'string', 

    // Add a reference to Pets 
    pets: { 
     collection: 'pet', 
     via: 'owner' 
    } 
    } 
}); 

var Pet = Waterline.Collection.extend({ 

    identity: 'pet', 
    connection: 'local-postgresql', 

    attributes: { 
    breed: 'string', 
    type: 'string', 
    name: 'string', 

    // Add a reference to User 
    owner: { 
     model: 'user' 
    } 
    } 
}); 

這將創建一個名爲領域上owner寵物收集的例子。除了使用現有的數據庫以外,這將很好。這稱之爲外鍵owner_id

有沒有辦法覆蓋數據庫中使用的字段名稱?

回答

6

您可以更改設置columnName財產用於任何模型屬性列名:

attributes: { 
    breed: 'string', 
    type: 'string', 
    name: 'string', 

    // Add a reference to User 
    owner: { 
     columnName: 'owner_id', 
     model: 'user' 
    } 
    } 

還要注意,在定義帆模型時,你不應該從水線直接擴展,但只需保存/api/models中的模型文件具有適當的名稱,例如User.js

module.exports = { 

    attributes: { 
     breed: 'string', 
     type: 'string', 
     name: 'string', 

     // Add a reference to User 
     owner: { 
     model: 'user', 
     columnName: 'owner_id' 
     } 
    } 
} 

,讓帆/水線處理的身份和你的連接,除非你真的想覆蓋默認值。

+0

該代碼是從waterline文檔複製的。我的模型不能從水線延伸。但是我確實想知道是否需要這樣做,所以感謝您提供更多信息。 – InternalFX

+2

Waterline文檔實際上是用於在Sails之外使用Waterline的;對於Sails v0.10,您可以使用[網站上的模型文檔](http://beta.sailsjs.org/#!documentation/reference/Models/Models.html)。 – sgress454

+1

哦哇!...我不知道你可以去http://beta.sailsjs.org !!! 我一直在尋找文檔無處不在....謝謝! – InternalFX