Node.js,ORM框架,Sequelize,入门及增、删、改、查代码案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js,ORM框架,Sequelize,入门及增、删、改、查代码案例相关的知识,希望对你有一定的参考价值。

参考技术A

ORM,对象关系映射——数据表映射(对应)一个类,数据表中的数据行(记录)对应一个对象,数据表字段对应对象的属性;数据表的操作对应对象的方法。

Sequelize,基于promise的ORM框架。地址:https://www.sequelize.com.cn/,Sequelize框架,初步体验,Sequelize具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。

安装

版本

生成数据库表案例

.env

srcconfigconfig.default.js

srcdbsequelize.js

srcmodeluser.model.js

执行命令: node src/model/user.model.js

说明:

1、id会被sequelize自动创建及管理。

2、sequelize根据模型创建表时,会 动将指定的表名变成复数。

3、sequelize根据模型创建表时,会 动增加两个字段:createdAt和updatedAt,这两个字段 于记录数据创建的时间与数据更新的时间。

4、User.sync( force: true ),创建数据表(强制同步数据库)。

service层,业务逻辑层

srcserviceuser.service.js

测试

src estuser.test.js

Node.js Sequelize ORM 模型问题

【中文标题】Node.js Sequelize ORM 模型问题【英文标题】:Node.js Sequelize ORM model issue 【发布时间】:2018-01-23 01:53:58 【问题描述】:

我正在为我的 Web 应用程序使用 Sequelize Node.js ORM。当我启动我的节点服务器时面临以下问题。

以下是更多细节

错误

project_directory_path\node_modules\sequelize\lib\sequelize.js:322

model.init(属性,选项);

TypeError:model.init 不是函数 在 Sequelize.define (project_directory_path\node_modules\sequelize\lib\sequelize.js:322:11) 在 module.exports (project_directory_path\models\sequelize\app_config_setting.js:2:41) 在 Sequelize.import (project_directory_path\node_modules\sequelize\lib\sequelize.js:379:32) 在 project_directory_path\models\index.js:34:48 在 Array.forEach (本机) 在对象。 (project_directory_path\models\index.js:31:6) 在 Module._compile (module.js:425:26) 在 Object.Module._extensions..js (module.js:432:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Module.require (module.js:366:17) 在需要 (module.js:385:17) 在对象。 (project_directory_path\server.js:12:14) 在 Module._compile (module.js:425:26) 在 Object.Module._extensions..js (module.js:432:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Function.Module.runMain (module.js:457:10) 启动时 (node.js:136:18) 在 node.js:972:3

版本

节点版本 v5.0.0, 续集版本:“^4.4.2”, 方言:“mysql”

index.js 文件(加载所有模型)

var fs = require('fs');
var path = require('path');
var sequelize = require('sequelize');
var sequelizeConnection = 
require('../configs/dbConnection.js').exposeSequelizeConnectionObj();
var sequelizeModelDir = path.join(__dirname, 'sequelize');
var dbModels = ;

fs.readdirSync(sequelizeModelDir)

//avoiding the index.js and all other files
//expect the model files
.filter(function (file) 
    return (file.indexOf(".") !== 0) && (file !== "index.js");
)

//iterating on each models and importing it
//in sequelize connection object
.forEach(function (file) 
    var dir = 'sequelize/';
    var models = sequelizeConnection.import(path.join(sequelizeModelDir, file));
    dbModels[models.name] = models;
);

//exposing all the models
module.exports = dbModels;
dbModels.sequelize = sequelizeConnection;

我的一个模型(只是想了解一下)

module.exports = function (sequelize,DataTypes) 
var roles = sequelize.define(
    'roles',
    
        id: autoIncrement: true, type: DataTypes.INTEGER(11), allowNull: false, primaryKey: true,
        role_name: type: DataTypes.ENUM('super_admin'), allowNull: false,
        code_name: type: DataTypes.ENUM('super_admin'), allowNull: false,
        row_status: type: DataTypes.ENUM('active','inactive'), allowNull: true
    ,
    
        timestamps: false,
        paranoid: true,
        freezeTableName: true,
        tableName: 'roles'
    
);
return roles; ;

数据库连接文件:

var sequelize = require('sequelize');
var sequelizeConnectionObj = new sequelize(process.env.DB_DATABASE_NAME, 
process.env.DB_USERNAME, process.env.DB_PASSWORD, 
host: process.env.DB_HOSTNAME,
dialect: 'mysql',
define: 
    timestamps: false
,
dialectOptions: 
    multipleStatements: true
,
logging: false,
pool: 
    max: 15,
    min: 0,
    idle: 10000
   
 );

   exports.exposeSequelizeConnectionObj = function connectSequelize() 
   return sequelizeConnectionObj;
  ;

【问题讨论】:

【参考方案1】:

通过更新节点模块解决问题

i-e npm 更新

只需更新您的节点模块。

【讨论】:

很高兴您设法解决了您的问题。您的代码似乎是由 sequelize-cli 生成的,对吗?我认为 Sequelize 的最新版本存在问题,目前尚不支持(我认为)。我已经创建了一个与您代码相同的小型存储库,但我认为它更简单> github.com/sapher/sequelize-boilerplate

以上是关于Node.js,ORM框架,Sequelize,入门及增、删、改、查代码案例的主要内容,如果未能解决你的问题,请参考以下文章

Node.js ORM框架Sequelize搭建服务

Node.js SQL数据库操作 (下)(ORM框架Sequelize模块及案例展示)

Sequelize简单好上手的node.js ORM框架[MarkDown Note]

Node.js关于ORM框架以及sequelize模块的使用

Node.js关于ORM框架以及sequelize模块的使用

[转]在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查