Flask、MongoDB、およびjQuery Autocompleteを使ってオートコンプリート検索を構築しようとしています。ユーザーが検索バーに入力すると、そのアドレスのリストを表示する必要があります。たとえば、ユーザーが123 F
と入力した場合、その文字列に基づいて5つのよく似たアドレスを表示したいとします。リストからアドレスを選択すると、同じCSVテーブルの一部である、そのアドレスに関連付けられているいくつかの属性を表示したいと思います。Flask、MongoDB、jQueryを使ってオートコンプリートを構築する
私はこのように構成されているアドレスの簡単なCSVファイルを持っている:私は持っていないものの
mongoimport --db myDB --collection myAddresses --file "/path/to/file" --type csv --headerline
:私が最初にこのCSVは、次のコマンドを使用して、MongoDBのにファイルをインポート
ID ADDRESS
1 123 Fakevill St
2 35 Lakeshore Rd
.. and so on
をクライアント側で作業を始めましたが、私はサーバー側でいくつかの問題にぶつかってきました。私のサーバー側の正規表現のクエリは結果を返しません。ここで私はフラスコでそれを設定している方法です。
@app.route('/getInfoByAddress', methods=['GET'])
def getInfoByAddress():
searchedAddress = request.args.get("Address")
addressCollection = myDB["addresses"]
addressJSON = []
regex = "/^" + searchedAddress + "/"
for address in addressCollection.find({'Address': re.compile(regex, re.IGNORECASE)},{"Address":1, "ID":1, "_id":0}):
addressJSON.append({"Address":address["Address"]})
return jsonify({"Addresses":addressJSON})
私はオートコンプリートとタイプのケースに対処するregex
とre
の組み合わせを使用しています。私はmyapp.dev:5000/getInfoByAddress?Address=123 F
、クエリをテストするために、私のブラウザに行く時現在、それは空のJSONを返す:私はprint regex
を行うと、私はコマンドラインでデータベースに送信され、適切な文字列(/^123 F/
)を
{
"Addresses": []
}
見ることができます残念ながら私は結果を見ていません。
'addressCollection.find(...)は何を返しますか?データが正しくロードされていますか?あなたはDBから何かを得ることができますか? – IanAuld
あなたのクエリが正しくないようです:http://stackoverflow.com/questions/3483318/performing-regex-queries-with-pymongo – IanAuld
コマンドラインで、 'db.addresses.find()。limit(5)を実行すると、 ) '、私はアドレスのリストを見ることができるので、データがそこにあります。 – mapr