Я использую 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();
},
...
У меня есть следующие проблемы:
Кажется, невозможно использовать autoIncrement
с Postgres, так как база данных ожидает определенный тип столбца, однако невозможно указатьЭто.1.1.Поскольку ORM требует либо autoIncrement
, либо required
в поле идентификатора, я использую обязательный - отсюда и «взлом» в config/modules.js
.
У меня много-много ассоциации, которые я не могу назначить в контроллере: я использую:
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"
Кто-нибудь смог использовать аналогичную (я бы сказал, довольно простую) установку?
Любые идеи приветствуются.