0

在 CouchDB 中,我正在写入一个数组并不断收到消息“[Circular]”。我正在使用 Node.js 创建要像这样编写的数据。

假设我在 CouchDB 的同一个文档中有两个电子邮件对象:

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 回答