Twitter OAuth + Node +一个MongoDB集合:如何存储用户?

时间:2012-11-26 00:28:58

标签: node.js mongodb oauth twitter-oauth

我已成功从Twitter的oauth服务中检索用户的ID和屏幕名称,如下所示:

{ user_id: '12345678', screen_name: 'spencergardner' }

我希望为用户创建一种简单的方法,使用Twitter(例如很快就会使用Facebook)进行身份验证,以便他们可以添加他们感兴趣的单词来学习他们的帐户。我现在如何在mongodb集合中设置“用户”,允许每个用户拥有自己的单词库(和其他数据)?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您就会问如何在mongo集合中存储具有不同结构的数据。

嗯,你很幸运! Mongo就是这么做的。您可以在mongo集合中存储任何不同的数据结构,而无需先验地“声明”结构。只需创建一个DBObject(例如,如果使用Java驱动程序),向其中添加字段,然后保存它。然后,您可以检索它,并查询数据以查看此特定用户的内容以及您在应用程序中需要的任何内容。

答案 1 :(得分:0)

我使用mongoose和nodejs创建一个用户模型,然后将oauth数据输入到该用户模型中,然后您可以自由地关联您想要的任何数据。

获得Oauth信息后,您可以创建一个新用户,将Twitter数据与特定用户模型相关联。 _id是自动提供的,但在这种情况下,您将使用从twitter返回的user_id(假设它是唯一的)。

这是一个示例模式:

var mongoose = require('mongoose')
, Schema = mongoose.Schema

var userSchema = new Schema({

_id: String,
screen_name: String,
words: Array
});

module.exports = mongoose.model('User', userSchema);

将来您可以查询特定用户的数据库,并在用户返回时对其进行身份验证。您还可以创建一个类似于以下内容的新用户:

new User({    _id: req.body.user_id,
              password: req.body.screen_name,
              words: []
    }).save(function(err) {
          if (!err) {
            res.send("User added");
            }
        })