简体   繁体   English

我无法让我的导出为我的 Sequelize model 工作

[英]I can't get my export to work for my Sequelize model

I'm creating an e-commerce site for a school project and I'm trying to connect my GoogleStrategy to my sqlite database so I can store the users in a table.我正在为一个学校项目创建一个电子商务网站,我正在尝试将我的 GoogleStrategy 连接到我的 sqlite 数据库,以便我可以将用户存储在一个表中。 But for some reason I get an error when calling the variable in my passport-setup file.但由于某种原因,在我的护照设置文件中调用变量时出现错误。

The error occurs when i try to call my exported User variable from user-model.js -> passport-setup.js当我尝试从 user-model.js -> passport-setup.js 调用我导出的用户变量时发生错误

user-model.js:用户模型.js:

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('./database.sqlite');

const User = sequelize.define('User', {
    googleId: {
        type:DataTypes.STRING,
        allowNull: false
    },
    displayName: {
        type: DataTypes.STRING,
        allowNull: false
    },
    email: {
        type: DataTypes.STRING,
        allowNull: false
    },
    photo: {
        type: DataTypes.STRING,
        allowNull: false
    },
});

console.log(User === sequelize.models.User); //true

module.exports = User;

passport-setup.js:护照setup.js:

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20');
const keys = require ('./keys');
const User = require('./user-model');

passport.use(
    new GoogleStrategy ({
        //options for the strategy
        callbackURL:'/redirect/',
        clientID: keys.google.clientID,
        clientSecret: keys.google.clientSecret,
    }, (accessToken, refreshToken, profile, done) => {
 
        console.log('passport callback function fired');
        console.log(profile)
    }) 
)

sequelize connection in index.js: index.js 中的续集连接:

//initialize sequelize
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize({
    dialect: 'sqlite',
    storage: './database.sqlite'
  });

  
//check sequelize connection
  try {
    sequelize.authenticate();
    console.log('Connection has been established successfully.');
  } catch (error) {
    console.error('Unable to connect to the database:', error);
  }

Error:错误:

[nodemon] starting `node index.js`
C:\Users\karwa\Studier\År 3\GIK2PG (Projektbaserad systemutveckling)\Sneakers-Project\node_modules\sequelize\dist\lib\sequelize.js:56
      options.dialect = urlParts.protocol.replace(/:$/, "");
                                          ^

TypeError: Cannot read property 'replace' of null
    at new Sequelize (C:\Users\karwa\Studier\År 3\GIK2PG (Projektbaserad systemutveckling)\Sneakers-Project\node_modules\sequelize\dist\lib\sequelize.js:56:43)
    at Object.<anonymous> (C:\Users\karwa\Studier\År 3\GIK2PG (Projektbaserad systemutveckling)\Sneakers-Project\passport-setup.js:24:19)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at Object.<anonymous> (C:\Users\karwa\Studier\År 3\GIK2PG (Projektbaserad systemutveckling)\Sneakers-Project\index.js:10:23)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
[nodemon] app crashed - waiting for file changes before starting...

I'm following this tutorial but i'm trying to implement sqlite3 and sequelize instead of mongodb and mongoose.我正在学习本教程,但我正在尝试实施 sqlite3 和 sequelize 而不是 mongodb 和 mongoose。

You need to export sequelize instance in index.js and use it in user-model.js instead of creating one more Sequelize instance there:您需要在index.js中导出sequelize实例并在user-model.js中使用它,而不是在那里再创建一个 Sequelize 实例:

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

const User = sequelize.define('User', {
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM