我无法让我的导出为我的 Sequelize 模型工作
I can't get my export to work for my Sequelize model
我正在为一个学校项目创建一个电子商务网站,我正在尝试将我的 GoogleStrategy 连接到我的 sqlite 数据库,以便我可以将用户存储在 table 中。但是由于某种原因,在我的护照设置文件中调用变量时出现错误。
当我尝试从 user-model.js -> passport-setup.js
调用导出的用户变量时发生错误
用户-model.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;
护照-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)
})
)
在 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);
}
错误:
[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...
您需要在 index.js
中导出 sequelize
实例并在 user-model.js
中使用它,而不是在那里再创建一个 Sequelize 实例:
const sequelize = require('./index');
const User = sequelize.define('User', {
...
我正在为一个学校项目创建一个电子商务网站,我正在尝试将我的 GoogleStrategy 连接到我的 sqlite 数据库,以便我可以将用户存储在 table 中。但是由于某种原因,在我的护照设置文件中调用变量时出现错误。
当我尝试从 user-model.js -> passport-setup.js
调用导出的用户变量时发生错误用户-model.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;
护照-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)
})
)
在 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);
}
错误:
[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...
您需要在 index.js
中导出 sequelize
实例并在 user-model.js
中使用它,而不是在那里再创建一个 Sequelize 实例:
const sequelize = require('./index');
const User = sequelize.define('User', {
...