Я хочу назначить registerdate, когда создаю пользователя через facebook на моем сайте nodejs. Я использую паспорт. Если я использую местный провайдер это возможно в моей Mongoose схеме использоватьDate.now в файле passport.js не может быть сделано
regisDate: {
type:Date,
'default': Date.now
},
однако в паспортном Facebook это мой код:
function(accessToken, refreshToken, profile, done) {
User.findOne({'facebook.id': profile.id}).exec()
.then(user => {
if (user) {
return done(null, user);
}
user = new User({
firstName: profile.first_name,
lastName: profile.last_name,
address: '',
regisDate: Date.now,
birthday: profile.birthday,
email: profile.emails[0].value,
role: 'user',
provider: 'facebook',
facebook: profile._json
});
user.save()
.then(user => done(null, user))
.catch(err => done(err));
})
.catch(err => done(err));
}));
и когда продолжить ее возвращение ошибки в странице, как это.
ValidationError: CastError: Cast to Date failed for value "function now() { [native code] }" at path "regisDate"
at MongooseError.ValidationError (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/error/validation.js:22:11)
at model.Document.invalidate (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/document.js:1411:32)
at model.Document.set (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/document.js:696:10)
at model.Document.set (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/document.js:541:18)
at model.Document (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/document.js:67:10)
at model.Model (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/model.js:41:12)
at new model (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/model.js:3200:11)
at passport.js:24:16
From previous event:
at model.wrappedPointCut [as save] (/home/gema/Desktop/stash/tx/node_modules/mongoose/lib/document.js:1893:14)
at passport.js:37:14
at tryOnImmediate (timers.js:534:15)
at processImmediate [as _immediateCallback] (timers.js:514:5)
From previous event:
at Strategy._verify (passport.js:19:8)
at /home/gema/Desktop/stash/tx/node_modules/passport-oauth2/lib/strategy.js:193:24
at /home/gema/Desktop/stash/tx/node_modules/passport-facebook/lib/strategy.js:181:5
at passBackControl (/home/gema/Desktop/stash/tx/node_modules/oauth/lib/oauth2.js:125:9)
at IncomingMessage.<anonymous> (/home/gema/Desktop/stash/tx/node_modules/oauth/lib/oauth2.js:143:7)
at emitNone (events.js:85:20)
at IncomingMessage.emit (events.js:179:7)
at endReadableNT (_stream_readable.js:913:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
Как позвонить в службу Date.now надлежащим образом через паспорт? спасибо.
Эй, спасибо! во всяком случае, у меня есть еще одно странное решение, которое я не заметил. Поэтому я объявляю в моей схеме users.model, что regisDate: {type: Date, 'default': Date.now} работает. Поэтому мне не пришлось бы вносить его в свой паспорт.js –