繁体   English   中英

如何使用 mssql 配置 sequelize?

[英]How to configure sequelize with mssql?

我想使用 sequelize 连接 Microsoft Sql。 我找到了这个链接http://docs.sequelizejs.com/manual/installation/getting-started.html

我用 nodejs 编写了下面的代码:

require('dotenv').config();
var express = require('express');
var app = express();
const Sequelize = require('sequelize');

const sequelize = new Sequelize(process.env.DB_NAME,null,null, {
dialect: 'mssql',
host: process.env.DB_HOST + "\\" + process.env.DB_SERVER,
operatorsAliases: false,

pool: {
 max: 5,
 min: 0,
 acquire: 30000,
 idle: 10000
}

});

sequelize.authenticate().then((err) => {
  console.log('Connection successful', err);
})
.catch((err) => {
  console.log('Unable to connect to database', err);
});

app.listen(process.env.PORT);
console.log('Starting Server on Port ', process.env.PORT);

但是当我运行代码时出现错误:

sequelize deprecated String based operators are now deprecated. Please use 
Symbol based operators for better security, read more at 
http://docs.sequelizejs.com/manual/tutorial/querying.html#operators 
node_modules\sequelize\lib\sequelize.js:242:13
Unable to connect to database { SequelizeHostNotFoundError: Failed to 
connect to USER-PC\SQLEXPRESS:1433-getaddrinfo ENOTFOUND USER-PC\SQLEXPRESS
at Connection.connection.on.err (C:\Users\User\Desktop\loginApp\node_modules
\sequelize\lib\dialects\mssql\connection-manager.js:98:22)

我做错了什么,我无法连接到数据库?

您需要为数据库提供mysql数据库名称、用户名和密码

var sequelize= new Sequelize('your Database name', 'username', 'password', {
host: 'localhost',
dialect: 'mssql', //postgres'|'sqlite'|''|'mysql',

pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
},

// SQLite only
//storage: 'path/to/database.sqlite'
});
// You can do it with a string.
const Sequelize = require('sequelize');
const sequelize = new Sequelize("mssql://username:password@mydatabase.database.windows.net:1433", 
 { pool: {
    "max": 10,
    "min": 0,
    "idle": 25000,
    "acquire": 25000,
    "requestTimeout": 300000
  },
  dialectOptions: {
    options: { encrypt: true }
  }
  });
      // This uses the Raw Query to query for all dbs for example
  sequelize.query(`  
                SELECT name, database_id, create_date  
                FROM sys.databases   
                GO `, 
  { type: sequelize.QueryTypes.SELECT})
    .then(async dbs => {
      console.log("dbs", dbs);
      return dbs;
    });```


Example above: mssql db hosted on Azure. 

Example below: mssql db on localhost. 

You can do it with key value pairs or a string.

`
var Sequelize = require("sequelize");

var sequelize = new Sequelize("sequelize_db_name", user, password, {
  host: "localhost",
  port: 1433,
  dialect: "mssql",
  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },
  dialectOptions: {
    options: { encrypt: true }
  }
});`

ES6 格式

import { Sequelize } from "sequelize";
import dotenv from 'dotenv';

dotenv.config();

const db = new Sequelize(
  process.env.DB_NAME,
  process.env.DB_USER,
  process.env.DB_PASS,
  {
    host: process.env.DB_HOST,
    dialect: "mssql",
  }
);

export default db;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM