Метод findOrCreate () не разрешен из моей модели пользователя - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь реализовать социальную аутентификацию в Node.js с помощью Passport, в результате чего мне нужно использовать findOrCreate () при настройке моей стратегии аутентификации Facebook.Это мой 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 (), подчеркивающий, что метод не разрешен.

Я убедился, что мне нужен правильный каталог, и я также попытался найти решение по этой ссылке: Что делает функция User.findOrCreate и когда она вызывается в паспорте? , которая такжетребуется метод findOne (), который также не разрешен.

Создаю ли я эти функции в моем model / user.js или что-то не так с моей моделью пользователя?Дайте мне знать, если мне не хватает, предоставив какой-либо код.

1 Ответ

0 голосов
/ 19 октября 2018

Вы должны подключить 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(...)
...