sequelize demo以及 mysql中文字符集问题解决

具体参考下面代码中的注释,完整demo下载地址

var express = require('express');
var mysql = require('mysql');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

//test mysql
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
});


connection.connect();

connection.query('SELECT 1+1 AS solution', function (err, rows, fields) {
        if (err) throw err;
        console.log('The solution is:', rows[0].solution);
    }
)
connection.end();


//sequelize


var Sequelize = require('sequelize');

var co = require('co');

co(function*() {
    // code here
}).catch(function (e) {
    console.log(e);
});

//打开数据库
var sequelize = new Sequelize(
    'test',
    'root',
    '123456',
    {
        'dialect': 'mysql',
        'dialectOptions': {
            charset: "utf8mb4",
            collate: "utf8mb4_unicode_ci",
            supportBigNumbers: true,
            bigNumberStrings: true
        },
        'host': 'localhost',
        'port': 3306,
//解决中文输入问题
        'define': {
            'underscored': true,
            'charset':'utf8mb4'
        }

    }
);

// 定义一个表
var User = sequelize.define(
    'user',
    {
        'emp_id': {
            'type': Sequelize.CHAR(10),
            'allowNULL': false,
            'unique': true
        },
        'nick': {
            'type': Sequelize.CHAR(10),
            'allowNULL': false
        },
        'department': {
            'type': Sequelize.STRING(64),
            'allowNULL': false
        },
    }
);

//创建一个表 (加force:true,会先删掉表后再建表)
//插入一条数据
// 暂时没有搞定中文问题,插入中文报错
User.sync({force: true}).then(function () {
    return User.create({
        emp_id: '2',
        nick: 'zyx2',
        department: '技术'
    });
// then的输入为上一步的结果
}).then(function (user) {

    console.log(user.get(
        {
            plain: true
        }
    ));

    // 查找一条数据
    User.findOne(
        {
            where:{
                emp_id: '2'
            }
        }
    ).then(function(result){
        console.log('after create find  user');
        console.log(result);
    });

//修改一条数据
    user.update(
        {
            department: 'IT2'
        },{
            where:
            {
                emp_id: '2'
            }
        }
    ).then(function (jane) {
        console.log(jane.get(
            {
            plain: true
            }
        ));
//删除一条数据
        User.destroy(
            {
                where:{
                    emp_id: '2'
                }

            }
        ).then(function(result){
            console.log('destroy user');
            console.log(result);

// 查找一条数据
            User.findOne(
                {
                    where:{
                        emp_id: '2'
                    }
                }
            ).then(function(result){
                console.log('after delete find  user');
                console.log(result);
            });

        });

    });
});





module.exports = app;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,741评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • 一、找到问题的本质 我们要透过事物的现象看本质,找到问题真正的根源是什么,而不是头痛医头,脚痛医脚。 就像袋鼠与笼...
    好听的暖阳阅读 3,401评论 0 4
  • 古人说时间,白天与黑夜各不相同,白天说“钟”,黑夜说“更”或“鼓”。又有“晨钟暮鼓”之说,古时城镇多设钟鼓楼,晨起...
    丰春书斋阅读 5,726评论 0 0
  • 我是开裂的地皮 等待初夏连绵的雨 点醒沉睡的花 染红我的唇 我是伫立千年的桥 等待初夏潺潺的流水 引来万千的鱼 灵...
    指间执念阅读 1,850评论 18 30

友情链接更多精彩内容