Аргумент типа '{title: string;описание: строка;} 'нельзя назначить параметру типа' {id: {};заглавие: {};описание: {};}» - PullRequest
0 голосов
/ 09 февраля 2019

Я пытался создать модель с Sequelize.Но метод createPost () выдает ошибку:

Argument of type '{ title: string; description: string; }' is not assignable to parameter of type '{ id: {}; title: {}; description: {}; }'. 
Property 'id' is missing in type '{ title: string; description: string; }' but required in type '{ id: {}; title: {}; description: {}; }'.

Я не уверен, почему метод create () хочет в качестве аргумента type {id: {};заглавие: {};описание: {};} и как я могу это решить.Без машинописи все нормально.

import * as Sequelize from 'sequelize';
import sequelize from '../util/database';

const postTable = sequelize.define('post', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    title: {
        type: Sequelize.STRING,
        allowNull: false
    },
    description: Sequelize.STRING
});

class Post {
    title: string;
    description?: string;

    constructor(title: string, description: string) {
        this.title = title;
        this.description = description;
    }

    static findAll() {
        return postTable.findAll();
    }

    createPost(){
        postTable.create({
            title: this.title,
            description: this.description
        });
    }
}
export default Post;

1 Ответ

0 голосов
/ 09 февраля 2019

Sequelize предполагает, что ваша таблица имеет свойство первичного ключа id по умолчанию

При желании вы можете просто удалить id, и sequelize будет обрабатывать его по умолчанию.

Или вы могли бы ...

Нет необходимости, чтобы атрибут id объекта имел allowNull: false.Это то, что автоматически обрабатывается sequelize.

Наличие allowNull: false сделает проверку sequelize, если при создании объекта существует атрибут id, и логически он не будет существовать, поскольку это то, что будет добавленопозже.

Измените это:

id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true
}

на это:

id: {
     type: Sequelize.INTEGER,
     autoIncrement: true,
     primaryKey: true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...