4
var obj = {};
obj.url = hostNames[i];
obj.statusCode = res.statusCode;
obj.headers = res.headers;

db.collection.save(JSON.stringify(obj, null, 2));

私は現在、Node.js 経由で HTTP 応答を要求しようとしており、その出力をJSON.stringify(JSON ドキュメント形式に変換する方法で) MongoDB に解析しています。何らかの理由で、MongoDB で奇妙な出力が得られます。次のようになります。

> db.scrape.find()
{ "_id" : ObjectId("51472849650593014a3c20da"), "0" : "{", "1" : "\n", "2" : " ", "3" : " ", "4" : "\"", "5" : "u", "6" : "r", "7" : "l", "8" :

私が考えているのは、各文字を新しい変数として解釈していることです。コードで何が間違っていましたか?

4

3 に答える 3

8

なぜobjを文字列化するのですか? API は JavaScript オブジェクトを想定しています。

ただ行う:

db.collection.save(obj);
于 2013-03-18T15:11:22.287 に答える
1

Meteor プロジェクトでも同じ問題が発生しました。"response" は、json 形式のデータを含む文字列です。「保存」メソッドが機能しませんでした。次の方法で新しいドキュメントを作成しました。

 obj = JSON.parse(response);
 db.collection.insert(obj);
于 2014-12-27T16:52:49.357 に答える
1

JSON.stringify(obj, null, 2) の出力を確認しましたか? これは期待される結果を返すと思います。

このエラーには 2 つの理由が考えられます: ドキュメントの保存方法が間違っているか、ドキュメントの取得方法が間違っています。

http://docs.mongodb.org/manual/tutorial/getting-started/ ( mongodb Getting-started) には、insert などを呼び出す前にドキュメントを json に変換することについての言及はありません。

db.collection.save({'content': JSON.stringify(obj, null, 2)}); のように保存してみましたか?

于 2013-03-18T15:08:42.783 に答える