我的一些模型没有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';
},
//...
};
,但我觉得这是一个有点棘手,我想知道如果有不会是一个更好的解决方案在模型或模型实例(即记录)上带有一些隐藏/未记录的辅助函数或方法...
你可以发布一个详细的例子。 – 2017-12-27 04:25:41