最资讯丨express之Sequelize使用
2022-08-12 17:36:13 来源:程序员客栈
安装
Sequelize可以通过npm(或yarn)安装:
(资料图片)
npm install --save sequelize
除安装sequelize模块外,还需要手工安装你所使用的数据库驱动模块:
$ npm install --save pg pg-hstore # Postgres$ npm install --save mysql2建立连接
要连接到数据库,必须创建一个Sequelize实例。这可以通过将连接参数分别传递到Sequelize构造函数,或通过传递单个连接URI来完成:
const Sequelize = require("sequelize");// 选项1:分别传入参数const sequelize = new Sequelize("database", "username", "password", { host: "localhost", dialect: /* "mysql" | "mariadb" | "postgres" | "mssql" 之一 */});// 选项1:传入连接URIconst sequelize = new Sequelize("postgres://user:pass@example.com:5432/dbname");测试连接
可以使用.authenticate()函数测试连接是否正常:
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(attributes, options):
const Model = Sequelize.Model;class User extends Model {}User.init({ // attributes firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING // allowNull defaults to true }}, { sequelize, modelName: "user" // options});
或者,使用sequelize.define:
const User = sequelize.define("user", { // attributes firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING // allowNull defaults to true }}, { // options});模型与数据库同步
如果你想 Sequelize 通过定义的模型自动创建表(或修改已存在的表),可以使用sync方法,如下所示:
// 注意: `force: true` 选项会在表存在时首先删除表User.sync({ force: true }).then(() => { // 现在 `users` 表会与模型定义一致 return User.create({ firstName: "John", lastName: "Hancock" });});一次同步所有模型
可以使用sequelize.sync()方法来同步所有模型,而不是调用每个模型的sync()方法。
查询以下是一些简单的查询:
// 查询所有 usersUser.findAll().then(users => { console.log("All users:", JSON.stringify(users, null, 4));});// 创建一个新 userUser.create({ firstName: "Jane", lastName: "Doe" }).then(jane => { console.log("Jane"s auto-generated ID:", jane.id);});// 删除每个名为 "Jane" 的记录User.destroy({ where: { firstName: "Jane" }}).then(() => { console.log("Done");});// 修改每个`lastName`为`null`的记录修改为"Doe"User.update({ lastName: "Doe" }, { where: { lastName: null }}).then(() => { console.log("Done");});
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...