2014-10-18 98 views
1

我的一些模型沒有id作爲主鍵,我需要知道給定模型的主鍵的名稱,但我找不到這樣做的方法。我搜索了waterline文檔和源代碼,但是我在源代碼中找到的所有內容都是使用attributes對象定義,該定義存儲在lib作用域中的不可訪問變量中。如何獲取模型的主鍵屬性名稱? (水線ORM)

「清潔工」辦法,我發現做到這一點,現在是這樣的:

// file: api/libs/model.js 
module.exports = { 
    //... 
    primaryKeyName: function (modelName) { 
    var key, attr, pk, 
     def = require('../models/' + modelName).attributes; 
    for (var key in def.attributes) { 
     attr = def.attributes[key]; 
     if (attr && attr.primaryKey) { 
     pk = key; 
     break; 
     } 
    } 
    return pk || 'id'; 
    }, 
    //... 
}; 

,但我覺得這是一個有點棘手,我想知道如果有不會是一個更好的解決方案在模型或模型實例(即記錄)上帶有一些隱藏/未記錄的輔助函數或方法...

回答

0

啊!我應該從控制檯檢查模型類,我會有我的答案。

無論如何,誰將會尋找同樣的信息,那就是:

SomeModel.primaryKey; // => 'id' or whatever it is 

瞧,就這麼簡單!

+0

你可以發佈一個詳細的例子。 – 2017-12-27 04:25:41

0

有一些實用程序可以幫助你做到這一點。退房帆藍圖文件,並專門actionUtils.js文件

API \ node_modules \帆\ LIB \吊鉤\藍圖

+0

是的,我已經檢查了這些文件,沒有給我**模型類/名稱**的模型的**主鍵名**。它可以從請求中讀取pk **值**,也可以再次使用請求獲取模型名稱,從不使用**模型類/名稱**。 – Huafu 2014-10-19 19:24:08