当前位置: 首页 > 后端技术 > Node.js

Sequelize中文文档v4-入门-入门

时间:2023-04-03 17:01:36 Node.js

入门-入门本系列文章的应用示例已发布在GitHub上:sequelize-docs-Zh-CN。您可以Fork以帮助改进或Star以关注更新。欢迎来到星空。通过NPM和Yarn安装Sequelize以可用。//使用NPM$npminstall--savesequelize#还有一个:$npminstall--savepgpg-hstore$npminstall--savemysql2$npminstall--savesqlite3$npminstall--savetedious//MSSQL//使用Yarn$yarnaddsequelize#也可以是以下之一:$yarnaddpgpg-hstore$yarnaddmysql2$yarnaddsqlite3$yarnaddtedious//MSSQL建立连接Sequelize会在初始化时建立连接池,所以如果从单个进程连接到数据库,你最好只为每个数据库创建一个实例。如果要从多个进程连接到数据库,则必须为每个进程创建一个实例,但每个实例应该有一个最大连接池大小为“最大连接池大小除以实例数”。因此,如果您希望最大连接池大小为90,并且您有3个工作进程,则该进程的每个实例的最大连接池大小都应为30。constsequelize=newSequelize('database','username','password',{host:'localhost',dialect:'mysql'|'sqlite'|'postgres'|'mssql',pool:{max:5,min:0,idle:10000},//SQLiteonlystorage:'path/to/database.sqlite'});//或者你可以简单地使用uri连接constsequelize=newSequelize('postgres://user:pass@example.com:5432/dbname');Sequelize的构造函数可以通过API引用获取一整套可用的参数。测试连接您可以使用.authenticate()函数来测试连接。sequelize.authenticate().then(()=>{console.log('已成功建立连接。');}).catch(err=>{console.error('无法连接到数据库:',呃);});您的第一个模型模型是使用sequelize.define('name',{attributes},{options}).constUser=sequelize.define('user',{firstName:{type:Sequelize.STRING},lastName:{type:Sequelize.STRING}});//force:true如果表已经存在,表将被丢弃User.sync({force:true}).then(()=>{//表已创建returnUser.create({firstName:'John',lastName:'Hancock'});});您可以在模型API参考中阅读有关创建模型的更多信息。您的第一个查询User.findAll().then(users=>{console.log(users)})您可以在数据检索中看到更多关于模型的查找器功能的信息,例如.findAll()。或者查看如何在Querying上执行特定查询,如WHERE和JSONB。将全局模型参数应用于Sequelize构造函数需要一个定义参数,该参数将用作所有已定义模型的默认参数。constsequelize=newSequelize('connectionUri',{define:{timestamps:false//默认为true}});constUser=sequelize.define('user',{});//时间戳默认为falseconstPost=sequelize.define('post',{},{timestamps:true//时间戳现在为false});PromiseSequelize使用promises来控制异步控制流。如果您不熟悉promises的工作原理,请不要担心,您可以在此处和此处阅读有关它们的信息。基本上,一个promise代表一个将在某个时刻出现的值——它意味着“我保证你会在某个时刻给你一个结果或一个错误”。//不要这样做user=User.findOne()console.log(user.get('firstName'));_这将永远无法使用!_这是因为user是promise对象,不是数据库中的数据行。正确的方法是:User.findOne().then(user=>{console.log(user.get('firstName'));});这将在您的环境或解释器支持async/await时可用,但仅在异步方法主体中可用:user=awaitUser.findOne()console.log(user.get('firstName'));了解什么是promise及其工作原理后,请使用bluebirdAPI参考作为传输工具。特别是,您可能会使用很多.all。如果本文对您有帮助,请在下方点赞或starGitHub:sequelize-docs-Zh-CN支持,谢谢。