我使用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 ID:
...
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在ID字段上需要autoIncrement
或required
,因此我使用了必填字段,因此在config/modules.js
中使用了“ hack”。
我有一个多对多关联,我不能在控制器中分配它: 我使用:
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"
有人能使用类似(我会说很简单)的设置吗?
欢迎提出任何想法。