gpt4 book ai didi

node.js - 方法 findOrCreate() 未从我的用户模型解析

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

我正在尝试使用 Passport 在 Node.js 中实现社交身份验证,因此我需要在配置 Facebook 身份验证策略时使用 findOrCreate()。
这是我的 facebook.js 配置发生的地方:

var passport = require('passport');
var FacebookStrategy = require('passport-facebook');

var User = require('../models/user');
var config = require('../_config');
var init = require('./init');

passport.use(new FacebookStrategy({
clientID: 1900216703426978,
clientSecret: 'f2c2ee6069de323109cb9347fad01026',
callbackURL: "http://localhost:3000/passport/facebook/callback"
},

User.findOrCreate({ facebookId: profile.id }, function (err, user) {
return cb(err, user);
})

));

init();

module.exports = passport;

这是我的模型/user.js
'use strict';

module.exports = (sequelize, DataTypes) => {
const user = sequelize.define('user', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING,
}, {});
user.associate = function(models) {
// associations can be defined here
};
return user;

}

根据 http://docs.sequelizejs.com/manual/tutorial/models-usage.html 的文档,
我认为 findOrCreate() 是一种可用于模型的内置方法。
但是,在我的 facebook.js 中, findOrCreate() 下有一个下划线,指出该方法未解析。

我已经确定我需要正确的目录,并且我还通过此链接尝试了一个解决方案: What is function User.findOrCreate doing and when is it called in passport? 也需要一个方法, findOne() 也未解决。

我是在我的模型/user.js 中创建这些函数还是我的用户模型有问题?如果我缺少提供任何代码,请告诉我。

最佳答案

您必须连接 sequalize 才能读取您的模型,例如:

// ./database.js

const Sequelize = require('sequelize')
const sequelize = new Sequelize(yourDatabaseOpts)
const User = require('./models/user')(sequelize, Sequelize)
module.exports = { User }

然后,当您想使用用户时,请执行例如以下:
const User = require('./database').User
User.findOrCreate(...)

关于node.js - 方法 findOrCreate() 未从我的用户模型解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52892072/

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