我的一些模型没有id
作为主键,我需要知道给定模型的主键名称,但我找不到这样做的方法。我搜索了waterline
文档和源代码,但我在源代码中找到的所有内容都是使用attributes
对象定义,该定义存储在lib范围内的一个无法访问的变量中。
我发现现在这样做的“清洁工”方式是这样的:
// 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 :(得分:0)
啊!我应该从控制台检查模型类,我有答案。
无论如何,无论谁想要相同的信息,这里都是:
SomeModel.primaryKey; // => 'id' or whatever it is
瞧,简单!
答案 1 :(得分:0)
有许多实用程序可以帮助您解决此问题。查看sails蓝图文件,特别是actionUtils.js文件
API \ node_modules \帆\ LIB \钩\蓝图