用户提交的页面的节点堆栈

时间:2013-12-05 03:26:43

标签: node.js web-services

我的目标是创建一个雅虎!答案"或" wiki答案"类型网站,人们可以在这里注册和发布问题,也可以回答问题。 (本网站将面向询问和回答数学/化学/物理作业问题。将对其进行配置,以便用户可以在问题和答案部分输入LaTeX标记。)

实际上,它将是回答家庭作业问题的堆栈溢出,人们可以在这里提出问题,发布解决方案,并提出问题和解决方案,例如如何在stackoverflow上。

我在http://www.university-answers.com/处有一个原型,但我尚未实施用户注册或用户提交的问题或答案。

我已经考虑过使用Passport进行用户身份验证,并尝试按照一些有关获取用户身份验证并将其存储在mongodb上的教程(如this tutorial)。我可以获取用户名和密码进行身份验证并存储在数据库中,以便以后可以登录。但是,我不知道如何跟踪每个用户提交的问题和提交的答案。例如,在stackoverflow上,我可以转到我的帐户页面,查看我提交的问题以及我提交的答案。我是否需要在数据库中存储用户的评论和问题以及用户名和密码?

修改:作为研究后的后续问题。我读了Data Model Design,我推断我可以为数据库制作以下结构:

user{
    _id:<object1>,
    username: input-data,
    password: however-this-is-done,
    questions[]: <object2>[], //an array of <object2> type objects? if this is possible
    solutions[]: <object3>[], //an array of <object3> objects, which are submitted 
    //solutions. if it is possible to create arrays of "references"
}
question{
    _id:<object2>,
    user_id:<object1>,
    body:input-data,
    solutions[]:<object3>[], //array of references?
}
solutions{
    _id:<object3>,
    user_id:<object1>,
    question_id:<object2>,
    body:user-input
}

用户进行身份验证后,应该能够在其user_id下发布。如果用户发布问题,则应运行创建question对象的函数,该对象的user_id属性设置为客户端的用户信息。 question对象应该有一个solution个对象数组,每个对象都有引用当前user_id和解决方案question对象的数据。如何在node.js中编写执行此操作的函数?

1 个答案:

答案 0 :(得分:2)

User模型中,您可以像这样创建一系列问题;

var QuestionSchema = new mongoose.Schema({
  body: String
});

var Question = mongoose.model('Question', QuestionSchema);

var LocalUserSchema = new mongoose.Schema({
  username: String,
  salt: String,
  hash: String,
  ref: [{type: mongoose.Schema.Types.ObjectId, ref: 'Question'}]
});

var Users = mongoose.model('userauths', localUserSchema);

也请查看本教程;

http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local