Sailsjs v1 PostgreSQL ассоциация «многие ко многим» завершилась неудачно из-за проверки модели - PullRequest
0 голосов
/ 19 декабря 2018

Я использую SailsJS v1 и PostgreSQL, и у меня есть две модели (Билеты и Записи) со связью «многие ко многим» следующим образом:

Tickets.js

/**
* Tickets.js
*
* @description :: A model definition represents a database table/collection.
* @docs        :: https://sailsjs.com/docs/concepts/models-and-orm/models */
module.exports = {
    attributes: {
        errorTypeId: {
            type: 'string'
        },
        records: {
            collection: 'records',
            via: 'tickets',
            dominant: true 
        }
    },
};

Records.js

/**
* Records.js
*
* @description :: A model definition represents a database table/collection.
* @docs        :: https://sailsjs.com/docs/concepts/models-and-orm/models
*/
module.exports = {
    attributes: {
        foreignId: {
            type: 'string'
        },
        tickets:  {
            collection: 'tickets',
            via: 'records'
        }
    },
};

В config/models.js Я добавил код для автоматической обработки идентификаторов GUID:

...
attributes: {
    createdAt: { type: 'number', autoCreatedAt: true, },
    updatedAt: { type: 'number', autoUpdatedAt: true, },
    id: { type: 'string', autoIncrement: false, required: true},
},
beforeCreate: function (modelObj, next) {
    modelObj.id = uuid.v4();
    next();
},
...

У меня есть следующие проблемы:

  1. Кажется, невозможно использовать autoIncrement с Postgres, так как база данных ожидает определенный тип столбца, однако невозможно указатьЭто.1.1.Поскольку ORM требует либо autoIncrement, либо required в поле идентификатора, я использую обязательный - отсюда и «взлом» в config/modules.js.

  2. У меня много-много ассоциации, которые я не могу назначить в контроллере: я использую:

    await Tickets.replaceCollection(ticket.id, 'records').members(recordIds);

Я получаю ошибку:

"Could not use one of the provided new records: Missing value for required attribute id. Expected a string, but instead, got: undefined"

Кто-нибудь смог использовать аналогичную (я бы сказал, довольно простую) установку?

Любые идеи приветствуются.

...