Node.js NodeJs如何使用Sequelize?

Node.js NodeJs如何使用Sequelize?,node.js,sequelize.js,Node.js,Sequelize.js,我是Node的新手,正在尝试学习Sequelize, 由于它是一种流行且易于使用的ORM,如Hibernate, 我正在使用MySql实现一个与之合作的示例, 但是,我面临一个问题,就是如何简单地实现相同的功能, 我使用以下命令安装了库- 1. npm install --save sequelize 2. npm install --save mysql2 我有两个文件- 1.app.js(主代码) 2.code.js(模型类) 1。app.js- const Sequelize = req

我是Node的新手,正在尝试学习Sequelize,
由于它是一种流行且易于使用的ORM,如Hibernate,
我正在使用MySql实现一个与之合作的示例,
但是,我面临一个问题,就是如何简单地实现相同的功能,
我使用以下命令安装了库-

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));
/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)
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文件时遇到以下错误-

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));
/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)
/home/user/office/pocs/test/app.js:26
code.findAll().then(code=>{
^
TypeError:code.findAll不是函数
在对象上。
但是这些示例不包含完整的代码、导入等
所以这有点难理解,

有人能帮忙吗?

您需要做一些更改:

首先,您需要返回函数内部的
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);

嘿!现在我得到了一个“ReferenceError:模型未定义”,它是更重要的导入还是sequelize导入的一部分?我已经更新了答案。
Model
类存在于
sequelize
导入中