Node.jsからcouchBaseでユーザー固有のビューを作成しようとしています。ここで私は、設計ドキュメントdesign_usersはCouchbaseの上に作成されますが、次のカールcouchBaseでビューを作成するときにjsonで入力変数をキーとして設定する方法
curl -H "Content-Type: application/json" -X POST -d '{"userId": "uidam231"}' http://localhost:3000/todo/id
を実行するには
app.post("/todo/:id", function(req, res){
console.log("hey" + req.body.userId)
baseview.setDesign('design_users', {
"$req.body.userId": {
'map': "function (doc, meta) { if(doc.toUserName == req.body.userId) {emit(doc.status, doc.title);}}"
}
},
function(err, result){
if (err != null) console.log(err);
else res.send(result)
}
);
})
を持っているコードは、予想されるビュー(uidam231は)ないです。コンソールにエラーはありません。
変数req.body.userIdがjsonに割り当てられている可能性が考えられます。ビュー名( "$ req.body.userId":)とフィルタ条件(doc.toUserName == req.body.userId)の両方に渡された変数が必要であることに注意してください。
お願いします。
こんにちは@avsej:私はこの部分を理解しています。私が達成しようとしているのはこれです。新しいユーザー登録について、(ユーザー固有の)ビューをcouchBaseに追加したいと思います。私はまた、各ユーザーに基づいてビューを追加するスクリプトを実行することができたと思います。基本的に、これはクエリではありません。マップ関数が数値や文字列などの特定の値をチェックするビューです。 – user1384205
この場合、ユーザ名はリテラルとして 'req.body.userId'の代わりに' map() '関数本体に置き換えなければなりません。ビュー名。しかし、あなたは、単一のビューを更新/追加することはできないことを覚えておく必要があります。毎回デザイン文書全体を上書きする必要があります。おそらくN1QLがあなたの問題を解決するだろうか? – avsej
NiQLはビューよりもレイテンシが高いようです。私はクライアント上のcouchbaseライトで緩和する予定です。私はまだ、上記の問題の文字通りの部分に変換することはできません。 – user1384205