我會開始說我做了很多研究,但我仍然很迷茫。CouchDB從Node.js中獲取用戶的所有帖子
我有一個工作版本,但這是我可以做到的最低效率的方式。對於瞭解規劃數據庫的最佳方式,我並不是非常有信心,我已經明確地依賴於ActiveRecord。反正,我只是想弄清楚這些事情:
- 找出計劃數據庫(我應該如何分開文件)
- 找到最有效的應對關係
- 找到最好的方法很好的方法從服務器查詢
好的,所以我注意到一些事情:一,你不能將我的客戶端變量傳遞到視圖,所以使用這樣的方法將無法正常工作。二,我認爲可能會有所有的帖子,然後檢查類型是否發佈,然後返回匹配的文檔,但這似乎有很多數據移動。
一些代碼:
所以我如何使用Node.js,CouchDB的,和納米中間件。
發表文件:
{
"_id": "post-slug",
"title": "Post Slug",
"user": "film42",
"date": 1343451412,
"type": "post"
}
用戶文檔:
{
"_id": "film42",
"email": "[email protected]",
"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);
});
});
我使用意見直到我意識到我無法傳遞一個變量,然後我查看了列表,但在閱讀了許多教程之後我迷了路LS。
感謝您的幫助!
乾杯!那就是訣竅。非常感謝! – film42 2012-07-29 04:36:45