使回送模型的索引唯一

问题描述 投票:0回答:4

这是我的模型的样子

  "name": "mClass",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "mClassName": {
      "type": "string",
      "required": true,
      "index": {
        "unique": true
      }
    },
    "mClassUrl": {
      "type": "string"
    },
    "mCreatedBy": {
      "type": "string",
      "required": true
    },
    "mCreatedAt": {
      "type": "date",
      "required": true,
      "default": "$now"
    },
    "mUpdatedAt": {
      "type": "date"
    },
    "mDeletedAt": {
      "type": "date"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$unauthenticated",
      "permission": "DENY"
    }
  ],
  "methods": {}
}

我想将类名设为唯一。我尝试了index:{unique:true},但似乎无法正常工作,因为我仍然可以创建具有相同名称的类。请帮助我进行哪些更改。

node.js mongodb loopbackjs
4个回答
0
投票

或者,在您的[[mClass.js中,您可以执行以下操作:

module.exports = function (mClass) { mClass.validatesUniquenessOf('mClassName'); };

0
投票
docs

id否布尔值该属性是否为唯一标识符。默认为false。请参阅下面的ID属性。

因此,我假设必须使用id:true代替索引:{...}。


0
投票
您需要做的是在model.json中定义索引:

"indexes": { "indexName": { "keys": { "mClassName": 1 }, "options": { "unique": true } } }

然后,当服务器启动时,您需要在数据源上运行自动更新,例如,启动脚本是一个不错的选择。 ./server/boot/db-autoupdate.js

'use strict'; module.exports = async function(app) { // this will trigger the database structure update, like creating indexes (which is not handled by auto-migrate module await app.dataSources.db.autoupdate(); };


0
投票
[如果有人正在寻找此问题的Loopback v4解决方案。在Loopback v4中,您可以使用“ index:{unqiue:true}”:修改@property批注。

@model() export class Client extends Entity { @property({ type: 'string', required: true, index: { unique: true, }, }) name: string; }

然后您必须更新您的架构:

npm run migrate

或重新创建它:

npm run migrate -- --rebuild

我猜PostgresQL也是支持和MySQL
© www.soinside.com 2019 - 2024. All rights reserved.