Strongloop UUID
继承人我创建的模型片段。我希望id属性总是通过uuid默认函数自动生成。但是,即使添加到隐藏的id属性可以由用户决定,如果他们将其传递到后创建方法。Strongloop UUID
除了使用方法挂钩或操作挂钩,总是覆盖值有另一个环回方法或标志(我也试过foreId属性),以确保id始终是一个uuid,即使用户提供一个值?如果没有,那么对于我的情况,“defaultFn”:“uuid”完全没有意义,如果我总是覆盖它。
{
"name": "Account",
"base": "PersistedModel",
"strict": true,
"idInjection": false,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"id": true,
"required": true,
"type": "string",
"defaultFn": "uuid"
},
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
出于某种原因,该ID可以由用户通过REST API重新定义和使用idInjection: false
和定义自定义ID属性时不受保护。
我会在GitHub上开出罚单,如果它没有这样做,在此期间很容易使用before save
operation hook
在Account.js,您可以修复它使用uuid包
const uuidV4 = require('uuid/v4');
module.exports = function(Account) {
Account.observe('before save', function(ctx, cb){
if (ctx.instance) {
ctx.instance.id = uuidV4();
} else {
ctx.data.id = uuidV4();
}
cb();
});
};
选择此作为答案,因为这是我采取了同样的方法。这似乎很愚蠢,你可以指定一个defaultFn,但用户可以随时覆盖这个值。 –
好吧,有'forceId'属性,但它似乎并没有工作。门票打开[这里](https://github.com/strongloop/loopback/issues/3029#issuecomment-267143569)。 – Overdrivr
唐不知道你为什么会被低估,因为这是一个完全有效的问题(我发现了一些非常有用的问题) – Overdrivr
@Overdrivr我或者因为我无法在任何地方看到答案:p –