护照个人资料未通过新属性
Passport Profile not passing new properties
我正在使用Passport OAuth2.0和Google作为我的提供者,并且遇到了一个奇怪的语法问题。
我的身份验证如下所示:
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/google/callback"
},
function(accessToken, refreshToken, profile, done) {
// asynchronous verification, for effect...
process.nextTick(function () {
User.findOrCreate({id:profile.id}, function(err, user, created){
if(err){return err;}
else if(!created){
console.log("Found User");
user.lastSeen = new Date();
user.save();
var u=profile;
u.lastSeen = user.lastSeen;
return done(null, u);
}
else{
console.log("Created User");
User.create({id:profile.id, lastSeen: new Date()});
user.save();
var u=profile;
u.lastSeen = new Date();
return done(null, u);
}
});
return done(null, profile);
});
}
));
出于某种原因,当我u
传回 jade 时,它似乎没有.lastSeen
属性,我的数据库也没有。
正在调用正确的函数(即,如果我清除我的数据库,我会在我的控制台中得到"创建用户",否则我会得到"找到的用户"),并且用户对象通过 ._json
属性进入我的 jade 模板,并显示个人资料图片,但我似乎无法让我的自定义内容粘住, 或者至少破坏某些东西并抛出错误。
有什么想法吗?
哎呀。
.findOrCreate()
是异步调用的,因此ls
在其上下文中不存在。要解决问题,我所要做的就是:
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/google/callback"
},
function(accessToken, refreshToken, profile, done) {
// asynchronous verification, for effect...
process.nextTick(function () {
User.findOrCreate({id:profile.id},{lastSeen:new Date()}, function(err, user, created){
var ls;
if(err){return err;}
else{
if(!created){
console.log("Found User");
var u = user.lastSeen;
user.lastSeen = new Date();
user.save(function(err){
err?console.log(err):null;
});
ls=u;
}
else{
console.log("Created User");
ls="New User";
}
}
console.log("ls = "+ls);
console.log(typeof profile);
profile.lastSeen = ls;
console.log(profile.lastSeen);
return done(null, profile);
});
});
}
));
嗯,这很尴尬。希望这样可以省去别人的麻烦。
相关文章:
- 创建新属性后的 JSON 空属性
- chart.js 2.0为数据集添加了新属性
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- 为for循环中的对象添加新属性
- 复制第一个属性's值,然后使用第一个属性的值创建新属性
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- 如何向JSON数组添加新属性
- 在对象上迭代并添加新属性
- 在AngularJS中对指令的隔离作用域设置新属性
- 在knocket js中应用绑定后,向视图模型添加新属性
- 护照个人资料未通过新属性
- 如何在 CKEditor 表的单元格属性中添加新属性
- 无法向 Mongoose 查询返回的对象添加新属性
- 有没有办法让 Javascript 在将新属性添加到给定对象时抛出错误
- W3C 设置新属性
- 是否可以向现有 JSON 数据添加新属性
- 使用 contructor 参数将新属性添加到原型
- 如何为 html5 标签创建新属性
- 创建新属性 - JS / 边缘动画
- 和服:修改数据、分解字符串和添加新属性的功能