我首先要说我已经做了很多研究,但我仍然很迷茫。
我有一个工作版本,但我敢肯定,这是你能做到的最低效的方式。我对知道计划数据库的最佳方法不是很有信心,很明显,我已经变得依赖 ActiveRecord。无论如何,我只是想弄清楚这些事情:
- 找出规划数据库的最佳方式(我应该如何分离文件)
- 找到最有效的处理关系
- 找到从服务器查询的好方法
好的,所以我注意到了一些事情:第一,您不能将 I 客户端变量传递到视图中,因此使用这样的方法是行不通的。第二,我认为可能需要获取所有帖子,然后检查类型是否为帖子,然后返回匹配的文档,但这似乎有很多数据在四处移动。
一些代码:
所以我使用 Node.js、CouchDB 和 nano 作为中间件。
邮寄文件:
{
"_id": "post-slug",
"title": "Post Slug",
"user": "film42",
"date": 1343451412,
"type": "post"
}
用户文件:
{
"_id": "film42",
"email": "test@example.com",
"posts": [
"post-slug",
"another-post-slug"
],
"type": "user"
}
以下是我目前获取所有帖子的方式(这真的很糟糕!):
function buildUserPostArray(array, user, res, i) {
db.get(user.posts[i], function(err, post_obj) {
if(i < user.posts.length) {
array.push(post_obj);
buildUserPostArray(array, user, res, i+1);
}
else {
console.log('Rendering view now.');
res.render('user.jade', {
user: user.user,
posts: array
});
}
});
}
app.get('/users/:id', function(req, res) {
db.get(req.params.id, function(err, user_obj) {
if(err) res.send('err1'); //bad id or server down
array = [];
buildUserPostArray(array, user_obj, res, 0);
});
});
我一直在使用视图,直到我意识到我无法传递变量,然后我查看了列表,但在阅读了许多教程后我迷路了。
谢谢您的帮助!!