由于模型验证,Sailsjs v1 PostgreSQL多对多关联addToCollection失败

时间:2018-12-19 20:38:45

标签: postgresql many-to-many sails.js

我使用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();
},
...

我遇到以下问题:

  1. 似乎无法将autoIncrement与Postgres一起使用,因为数据库需要特定的列类型,但是无法指定它。 1.1。由于ORM在ID字段上需要autoIncrementrequired,因此我使用了必填字段,因此在config/modules.js中使用了“ hack”。

  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"

有人能使用类似(我会说很简单)的设置吗?

欢迎提出任何想法。

0 个答案:

没有答案