【发布时间】:2012-04-02 12:18:45
【问题描述】:
我正在尝试在express 中使用everyauth 来验证用户对允许向图像添加文本评论的网站的身份。我目前正在使用 twitter oauth api 来验证我的用户。
现在我正在尝试建立一个自定义用户数据库,该数据库允许我将多种登录方式连接到 CouchDB 中的单个条目。当我想在他最初通过 twitter 连接时将新用户添加到数据库时,我遇到了麻烦。我findUserById的代码如下:
everyauth.everymodule.findUserById (userId, callback) ->
users.findById userId, (err,res) ->
if res.id
# id returned, so there is an entry in the DB
callback null, res
else
# no entry in the DB, add a new one
users.saveById JSON.stringify(userId), {"name":"test"}, (saveErr, saveRes) ->
callback null, saveRes
everyauth.twitter
.consumerKey(config.twitterConsumerKey)
.consumerSecret(config.twitterConsumerSecret)
.findOrCreateUser((session, token, secret, user) ->
promise = @.Promise().fulfill user
).redirectPath '/'
findById 和saveById 是查询数据库的cradle 对象的方法,userId 似乎是由everyauth 提供的。
我的问题在于{"name":"test"} 部分。这是我要将req.session.auth.twitter 对象中的数据添加到数据库的位置。 如何从findUserByIdfunction 中访问这些值?
这可能吗?有不同的方法吗?我正在查看 findOrCreateUser 函数,但我不知道如何在不使我的应用崩溃的情况下更改它 - 我还没有掌握 Promise 的概念。
【问题讨论】:
标签: node.js express everyauth promise