热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Sequelizeunderscoredoptionnotfunctioningasexpected

如何解决《Sequelizeunderscoredoptionnotfunctioningasexpected》经验,为你挑选了1个好方法。

I've been following Ben Awad's tutorials on YouTube. Specifically I'm using sequelize to set up a PostgreSQL database as he outlines.

I want to define my fields in camel case and have them converted to snake case as he does in his tutorials, specifically here, also outlined in the sequelize docs. However when I do the same my table fields are not converted to snake case.

Here's a MWE of the code I'm using:

models/index.js

import Sequelize from 'sequelize';

var sequelize = new Sequelize('dms', 'postgres', 'postgres', {
    dialect: 'postgres', 
    define: {
        underscored: true,
        freezeTableName: true,
    },
});

const models = {
    Appointments: sequelize.import('./appointment'),
};

Object.keys(models).forEach(modelName => {
    if (models[modelName].associate) {
        models[modelName].associate(models);
    }
});

models.sequelize = sequelize;
models.Sequelize = Sequelize;

export default models;

From the file above it is my understanding that define: {underscored: true} should convert all table fields to snake case, as stated in his tutorial video above.

models/appointment.js

export default (sequelize, DataTypes) => {
    const Appointment = sequelize.define("appointment",
        {
            status: {
                type: DataTypes.STRING
            },
            appointmentStart: {
                type: DataTypes.DATE,
            },
            appointmentEnd: {
                type: DataTypes.DATE,
            },
        },
    );

    return Appointment;
};

index.js

import { ApolloServer, gql} from 'apollo-server';
import typeDefs from './schema';
import resolvers from './resolvers';
import models from './models';

const PORT = 8080;

const graphqlEndpoint = '/graphql';

const server = new ApolloServer({
    typeDefs,
    resolvers,
    graphqlPath: graphqlEndpoint
});

models.sequelize.sync({force:true}).then(() =>  {
    server.listen(PORT)
});

The output SQL from the above MWE is as follows:

Executing (default): DROP TABLE IF EXISTS "appointment" CASCADE;
Executing (default): DROP TABLE IF EXISTS "appointment" CASCADE;
Executing (default): CREATE TABLE IF NOT EXISTS "appointment" ("id"   SERIAL , "status" VARCHAR(255), "appointmentStart" TIMESTAMP WITH TIME ZONE, "appointmentEnd" TIMESTAMP WITH TIME ZONE, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'appointment' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;

As can be seen, it does not convert fields such as appointmentStart to appointment_start.

I have also tried declaring underscored: true on the indiviudal models, such as the following:

export default (sequelize, DataTypes) => {
    const Appointment = sequelize.define("appointment",
        {
            status: {
                type: DataTypes.STRING
            },
            appointmentStart: {
                type: DataTypes.DATE,
            },
            appointmentEnd: {
                type: DataTypes.DATE,
            },
        }, { underscored: true }
    );

    return Appointment;
};

This too does not work.

我觉得我可能会遗漏一些明显的东西,或者有根本的误解。



1> 小智..:

您正在使用哪个版本的Sequelize?我猜是v4或更早的版本;该underscored选项仅适用于v5或更高版本上的属性/列名称。

在Sequelize v4中,唯一underscored: true会影响的属性名称timestamps: true是使用Sequelize时创建的时间戳属性。(即createdAt=> created_atupdatedAt=> updated_at等),

在您声明的模型列中sequelize.define(),不要将其转换为蛇形,您需要field在每个驼峰式列名称上显式设置属性,以实现此目的。对于appointmentStart上面的列,它看起来像:

...
appointmentStart: {
    type: DataTypes.DATE,
    field: 'appointment_start',
},


推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
author-avatar
xiao15387977702
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有