0

CouchDB で配列に書き込んでいると、"[Circular]" というメッセージが表示され続けます。このように書き込むデータをNode.jsで作成しています。

CouchDB の同じドキュメントに 2 つのメール オブジェクトがあるとします。

unverifiedEmail = [{"address":"john@example.com","dateAdded":"1389215329484"}]
verifiedEmail = []

Node.js では、これを書く前に行います。

var oldData = readFromCouchDb();
var newData = oldData;
newData.verifiedEmail.unshift(newData.unverifiedEmail[0]);
writeToCouchDb(newData);

次に、Futon でドキュメントを表示すると、次のように表示されます。

unverifiedEmail = [{"address":"john@example.com","dateAdded":"1389215329484"}]
verifiedEmail = "[Circular]"

何が起きてる?

4

1 に答える 1

0

この問題は、Javascript オブジェクトを互いに等しく設定する方法の深さに関係していることがわかりました。

これを解決するために、上記の unshift の代わりに次のコードを使用しました。

newData.verifiedEmail.unshift(JSON.parse(JSON.stringify(newData.unverifiedEmail[0])));
于 2014-01-12T00:06:03.960 に答える