我的目标是创建一个雅虎!答案"或" 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中编写执行此操作的函数?
答案 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