Я не могу установить уникальное поле в модели Loopback ORM - PullRequest
2 голосов
/ 03 мая 2019

Я новичок в Loopback 3. И мне нужно определить модель с уникальным полем.Поле электронной почты должно быть уникальным.Я использую Postgresql в качестве базы данных.

Я попытался добавить опцию "unique": true.Кроме того, я попытался следовать следующим советам: Обеспечить уникальное значение поля в модели с обратной связью .Но это не дало желаемого результата.

 "properties": {
    "id": {
      "type": "number",
      "id": true,
      "generated": true,
      "postgresql": {
        "dataType": "bigint"
      }
    },
    "name": {
      "type": "string",
      "postgresql": {
        "dataType": "character varying"
      }
    },
    "email": {
      "type": "varchar",
      "postgresql": {
        "dataType": "character varying"
      }
    },
    "added_date": {
      "type": "date",
      "postgresql": {
        "dataType": "date"
      }
    }
  }

В конечном итоге я хочу иметь уникальное поле в схеме Postgres.В Postgres это должно выглядеть так:

-- Table: public."user"

-- DROP TABLE public."user";

CREATE TABLE public."user"
(
    id bigint NOT NULL DEFAULT nextval('user_id_seq'::regclass),
    name character varying COLLATE pg_catalog."default",
    email character varying COLLATE pg_catalog."default",
    added_date date,
    CONSTRAINT user_pkey PRIMARY KEY (id),
    CONSTRAINT user_email_key UNIQUE (email)

)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public."user"
    OWNER to postgres;

1 Ответ

0 голосов
/ 03 мая 2019

Я думаю, что это будет работать.Либо добавьте свойство index в столбец def, либо добавьте его в индексную часть модели.Странно, что нет больше документации по этому вопросу.

 "properties": {
    "id": {
      "type": "number",
      "id": true,
      "generated": true,
      "postgresql": {
        "dataType": "bigint"
      }
    },
    "name": {
      "type": "string",
      "postgresql": {
        "dataType": "character varying"
      }
    },
    "email": {
      "type": "varchar",
      "postgresql": {
        "dataType": "character varying"
      }
    },
    "added_date": {
      "type": "date",
      "postgresql": {
        "dataType": "date"
      }
    }
  },
  "indexes": {
    "EMAIL_INDEX": {
      "columns": "email",
      "kind": "unique"
    }
  }

Или альтернативно

 "properties": {
    "id": {
      "type": "number",
      "id": true,
      "generated": true,
      "postgresql": {
        "dataType": "bigint"
      }
    },
    "name": {
      "type": "string",
      "postgresql": {
        "dataType": "character varying"
      }
    },
    "email": {
      "type": "varchar",
      "postgresql": {
        "dataType": "character varying"
      },
      "index": {"kind": "UNIQUE"}
    },
    "added_date": {
      "type": "date",
      "postgresql": {
        "dataType": "date"
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...