gpt4 book ai didi

node.js - NodeJs 如何使用 Sequelize?

转载 作者:行者123 更新时间:2023-12-03 22:26:58 25 4
gpt4 key购买 nike

我是 Node 的新手,我正在尝试学习 Sequelize,
由于它是一种流行且易于使用的 ORM,例如 Hibernate,
我正在使用 MySql 来实现一个示例,
但是,我面临一个问题,要对其进行简单的实现,
我使用以下命令安装了库 - o​​jit_rstrong

1. npm install --save sequelize
2. npm install --save mysql2

我有两个文件 -
1. app.js(主代码)
2.code.js(模型类)

1. app.js -
const Sequelize = require('sequelize');

const code = require('./code');

const sequelize = new Sequelize('junit', 'root', 'root', {
host: 'localhost',
dialect: 'mysql'/* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});

sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});

code.findAll().then(codes => {
console.log("All users:", JSON.stringify(codes, null, 4));
})
.catch(err => console.log(err));

2. code.js -
const Sequelize = require('sequelize');


module.exports = (sequelize) => {
class Code extends Model {}
Code.init({
id: {
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
createdBy: {
type: Sequelize.INTEGER
}
}, {
sequelize,
// options
});
}

但我在运行 app.js 文件时遇到以下错误 -
/home/user/office/pocs/test/app.js:26
code.findAll().then(codes => {
^

TypeError: code.findAll is not a function
at Object.<anonymous> (/home/user/office/pocs/test/app.js:26:8)
at Module._compile (internal/modules/cjs/loader.js:734:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
at Module.load (internal/modules/cjs/loader.js:626:32)
at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
at Function.Module._load (internal/modules/cjs/loader.js:558:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:797:12)
at executeUserCode (internal/bootstrap/node.js:526:15)
at startMainThreadExecution (internal/bootstrap/node.js:439:3)

我指的是这个文档 -
http://docs.sequelizejs.com/manual/getting-started
但示例不包含完整的代码、导入等
所以有点难理解,
有人可以帮忙吗?

最佳答案

您需要进行一些更改:

首先,您需要在函数内返回 Code 类。

const Sequelize = require('sequelize');

module.exports = (sequelize) => {
class Code extends Sequelize.Model {}
Code.init({
...
}, {
sequelize,
// options
});
return Code;
}

其次,您要在 ./code 中导出一个函数。您必须使用您创建的 sequelize 对象调用此函数:
const sequelize = new Sequelize('junit', 'root', 'root', {
...
});

const code = require('./code')(sequelize);

最后,我建议您保持大小写约定并在导入期间引用 titlecase 中的 Code 模型,例如 const Code = require('./code')(sequelize);

关于node.js - NodeJs 如何使用 Sequelize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com