sequelize的使用
与数据库交互有两种方法:
使用数据库的原生查询语言(例如SQL) 使用对象数据模型(Object Data Model,简称 ODM)或对象关系模型(Object Relational Model,简称 ORM)。 ODM / ORM 能将网站中的数据表示为 JavaScript 对象,然后将它们映射到底层数据库。一些 ORM 只适用某些特定数据库,还有一些是普遍适用的。 使用 SQL 或其它受到支持的查询语言才能达到最佳性能。ODM 通常慢一些,因为在对象和数据库格式之间存在一层用于映射的翻译代码,使它不一定会选用最高性能的数据库查询(尤其是普遍使用级别的 ODM,它必须在各类数据库功能方面做出更大的折衷)。
使用 ORM 的好处是:程序员可以继续用 JavaScript 对象的思维而不用转向数据库语义的思维。 在(同一个或不同网站)使用不同数据库时尤为明显。使用 ORM 还可以更方便地对数据进行验证和检查。
Sequelize:Sequelize是一款基于Nodejs功能强大的异步ORM框架。 同时支持PostgreSQL, MySQL, SQLite and MSSQL多种数据库,很适合作为Nodejs后端数据库的存储接口,为快速开发Nodejs应用奠定扎实、安全的基础
本文基于sqlite
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
安装sequelize
Sequelize 可通过 npm ( 或 yarn ) 获得. 中文文档
npm install sequelize
你还需要手动安装对应的数据库驱动程序:
# 选择对应的安装:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server
建立连接(sqlite)
要连接到数据库,你必须创建 Sequelize 实例. 这可以通过将连接参数分别传递给 Sequelize 构造函数或传递单个连接 URI 来完成:
var path = require('path')
const Sequelize = require("sequelize");
const sequelize = new Sequelize(undefined, undefined, undefined, {
host: "localhost",
dialect: "sqlite",
storage: path.join(__dirname,"../database/database.sqlite") //数据存放路径
});
测试连接
你可以使用 .authenticate() 函数来测试连接.
// 在model文件下输入node note.js测试数据库链接是否成功
sequelize
.authenticate()
.then(() => {
console.log("Connection has been established successfully.");
})
.catch(err => {
console.error("Unable to connect to the database:", err);
});
表建模
模型是一个扩展 Sequelize.Model 的类. 模型可以用两种等效方式定义. 第一个是Sequelize.Model.init(属性,参数):
const Model = Sequelize.Model;
class User extends Model {}
User.init({
// 属性
firstName: {
type: Sequelize.STRING,
allowNull: false
},
lastName: {
type: Sequelize.STRING
// allowNull 默认为 true
}
}, {
sequelize,
modelName: 'user'
// 参数
});
另一个是使用 sequelize.define:
const Note = sequelize.define("note", {
text: {
type: Sequelize.STRING,
allowNull: false
}
});
在内部, sequelize.define 调用 Model.init.
上面的代码告诉 Sequelize 在数据库中期望一个名为 users 的表,其中包含 firstName 和 lastName 字段.
// 注意:使用{force:true}每次存数据前都将删除之前同名的文件
Note.sync({force:true})
.then(() => {
Note.create({
text: "数据库里的数据"
});
})
查询
// 查找所有用户
// {raw: true}
User.findAll().then(users => {
console.log("All users:", JSON.stringify(users, null, 4));
});
// {raw: true}找到的结果显示原始数据,效果类似JSON.stringify
// 创建新用户
User.create({ firstName: "Jane", lastName: "Doe" }).then(jane => {
console.log("Jane's auto-generated ID:", jane.id);
});
// 删除所有名为“Jane”的人
User.destroy({
//使用where查找
where: {
firstName: "Jane"
}
}).then(() => {
console.log("Done");
});
// 更新数据, 将所有没有姓氏的人改为“Doe”
User.update({ lastName: "Doe" }, {
where: {
lastName: null
}
}).then(() => {
console.log("Done");
});
另外,node.js后台如何调试
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多。使用起来跟Chrome的javascript调试器很相似。
使用npm安装:
npm install node-inspector
然后需要通过浏览器连接到node-inspector,需要启动inspector服务
node-inspector
启动, 默认8080端口
最后以debug模式运行node.js应用
node --debug app.js
通过URL http://127.0.0.1:8080/debug?port=5858 就可以进行调试了。
网友评论