ユーザーが単語を入力できるアプリケーションを構築中です。そのような言葉が自動車ブランドだとしましょう。この車のブランドに基づいて、私は各工場で労働者の数を取得したい。 PouchDBデータベースの私の構造は、各ドキュメントが1つの工場を表し、文書には労働者の数とブランド名が含まれているということです。 IDはdatetimesなので、クエリには役に立ちません。PouchDBビューの状態でユーザー入力を取得して更新する
これは私が今作成したコードです:
function getWorkers() {
//Get and remove current design doc
factoryDB.get('_design/workers').then(function (doc) {
return factoryDB.remove(doc)
//Create new design doc and put it to the db
}).then(function() {
var designWorkers = {
_id: '_design/workers',
views: {
'workersView': {
map: function(doc) {
if (doc.Brand === $('#input').val()) {
emit(doc.workers,doc);}
}.toString()
}
}
};
return factoryDB.put(designWorkers);
//Now start the query
}).then(function() {
return factoryDB.query('workersView')
//And get the results
}).then(function(result) {
console.log(result)
}).catch(function (err) {
console.log(err)
});
};
ユーザーがボタンをクリックするたびに関数が呼び出されます。 初めて正常に動作しています。しかし、言葉を変更すると、前のクエリの結果が返されます。たとえば、
最初にユーザーが「Mercedes」と入力すると、「Mercedes」を含むすべての工場文書が返されます。しかし、私は今それを削除し、代わりに "アウディ"を書く場合、私はまだ "メルセデス"のドキュメントを取得します。関数が再び呼び出され、入力値も変わるたびに前の設計ドキュメントを削除すると思ったので、実際にはそれを取得しません。
私はここで間違っていますか?