【发布时间】:2019-03-24 07:52:55
【问题描述】:
我正在尝试使用 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 中创建这些函数还是我的用户模型有问题?如果我缺少提供任何代码,请告诉我。
【问题讨论】:
标签: node.js sequelize.js passport.js