javascript mysql用长字符串数据创建表

agxfikkp  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(129)

我在做一个网上论坛,我做了写作功能,我的写作形式分为标题和内容,正常情况下,它工作得很好,但是如果我在内容上输入的时间长一点,就会出错。我用的是mysql和sequelize。这是错误信息

,这是我的代码

router.post('/', isLoggedIn, upload2.none(), async (req, res, next) => {
    try{
        const post = await Post.create({
            title: req.body.title.toLowerCase(),
            content: req.body.editordata,
            img: req.body.url,
            UserId: req.user.id,
        });
        res.redirect('/');
    } catch (error) {
        console.error(error); 
        next(error);
    }
});

(code发生哪个错误)
我的帖子模块看起来像这样

const Sequelize = require('sequelize');

module.exports = class Post extends Sequelize.Model {
    static init(sequelize) {
        return super.init({
        title: {
            type: Sequelize.STRING(100),
            allowNull: false,
        },
        content: {
            type: Sequelize.STRING(20000),
            allowNull: false,
        },
        img: {
            type: Sequelize.STRING(250),
            allowNull: true,
        },
        }, {
        sequelize,
        timestamps: true,
        underscored: false,
        modelName: 'Post',
        tableName: 'posts',
        paranoid: false,
        charset: 'utf8mb4',
        collate: 'utf8mb4_general_ci',
        });
    }

    static associate(db) {
        db.Post.belongsTo(db.User);
        db.Post.belongsToMany(db.Hashtag, { through: 'PostHashtag' });
    }
};

有什么方法可以保存表中的长数据吗?
我试着在这里增加数字.(后模块)

content: {
    type: Sequelize.**STRING(20000),**
    allowNull: false,
},

还是老样子。

gk7wooem

gk7wooem1#

使用Sequelize.TEXT('long')

content: {
    type: Sequelize.TEXT('long'),
    allowNull: false,
},

长文本

最大长度为4,294,967,2954GB (232 - 1)(以字节为单位)的TEXT列。如果值包含多字节字符,则有效最大长度较小。LONGTEXT列的有效最大长度还取决于客户机/服务器协议中配置的最大数据包大小和可用内存。每个LONGTEXT值都使用四位-字节长度前缀,指示值中的字节数。
参考:https://mariadb.com/kb/en/longtext/

相关问题