私はたくさんの研究をしたと言うことから始めますが、それでも私はかなり迷っています。
私は動作するバージョンを持っていますが、これはあなたがこれを行うことができる最も非効率的な方法だと確信しています。私はDBを計画するための最良の方法を知ることに自信がありません。明らかに、ActiveRecordに依存するようになりました。とにかく、私は単にこれらのことを理解しようとしています:
- データベースを計画するための最良の方法を見つける(ドキュメントを分離する方法)
- 関係に対処するための最も効率的なものを見つける
- サーバーからクエリを実行するための適切な方法を見つける
さて、私が気付いたことがいくつかあります。1つは、クライアント変数をビューに渡すことができないため、そのようなメソッドを使用しても機能しないことです。2つ目は、すべての投稿を取得して、タイプがpostであるかどうかを確認し、一致するドキュメントを返すことはできないと思いますが、それは大量のデータが移動しているようです。
いくつかのコード:
そのため、ミドルウェアとして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);
});
});
変数を渡すことができないことに気付くまでビューを使用していたので、リストを調べましたが、多くのチュートリアルを読んだ後、迷子になりました。
助けてくれてありがとう!!