【问题标题】:Strongloop UUID强循环 UUID
【发布时间】:2016-12-14 20:58:07
【问题描述】:

这是我创建的模型的 sn-p。我希望 id 属性始终通过 uuid 默认函数自动生成。但是,即使将 id 属性添加到 hidden 也可以由用户决定是否将其传递给 post create 方法。

除了使用方法钩子或操作钩子,要始终覆盖值,还有另一种环回方法或标志(我也尝试过 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": {}
}

【问题讨论】:

  • 不知道为什么你被否决了,因为这是一个完全正确的问题(感谢它我发现了一些东西)
  • @Overdrivr 我要么因为我在任何地方都看不到答案:p

标签: loopbackjs strongloop


【解决方案1】:

由于某种原因,用户可以通过 REST api 重新定义 id,并且在使用 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 属性,但它似乎根本不起作用。票已打开here
猜你喜欢
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
相关资源
最近更新 更多