Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs Mongo结果与复制的结果不同_Javascript_Json_Node.js - Fatal编程技术网

Javascript Nodejs Mongo结果与复制的结果不同

Javascript Nodejs Mongo结果与复制的结果不同,javascript,json,node.js,Javascript,Json,Node.js,我对MongoDB有问题。当我做一些像: User.find({}, (err, result) => { }) 我得到的结果是: [{ _id: someId name: someName surname: someSurname }] 当我将其复制到剪贴板并粘贴到任何变量时,如: let a = [{ "_id": "someId" "name": "someName" "surname": "someSurname" }] 然后我检查(a===result)是否为false,结

我对MongoDB有问题。当我做一些像:

User.find({}, (err, result) => { })
我得到的结果是:

[{
_id: someId
name: someName
surname: someSurname
}]
当我将其复制到剪贴板并粘贴到任何变量时,如:

let a = [{
"_id": "someId"
"name": "someName"
"surname": "someSurname"
}]

然后我检查(
a===result
)是否为false,结果不一样。我的问题是为什么,以及如何修复它,因为我需要将“
result
”更改为“
a

根据Mukesh Sharma的回答,您没有正确使用相等运算符

当使用
==
时,您可以测试对象本身是否指向相同的引用(情况绝对不是这样)

您似乎想测试两个数组(也是具有特殊属性的对象)是否相等。在这种情况下,使用简单的等式将永远不起作用。您必须遍历数组中的所有对象,然后,对于每个对象,遍历所有键并检查它们是否与另一个数组的对应项相似

您可以参考答案来检查如何比较两个对象。最终结果应如下所示:

// assuming you use ES6
let array1 = [{ a: 1, b: 2 }];
let array2 = [{ a: 1, b: 2 }];

// check if the arrays have different length     
if (array1.length !== array2.length) { 
    // definitely not equal
    return false;
}}

let n = array1.length;

for (let i = 0; i < n; i++) {
    let res = deepObjCmp(array1[i], array2[i]);
    if (!res) {
        // at least one object is different
        return false;
    }
}
//假设您使用ES6
设array1=[{a:1,b:2}];
设array2=[{a:1,b:2}];
//检查数组是否具有不同的长度
如果(array1.length!==array2.length){
//绝对不平等
返回false;
}}
设n=阵列1.长度;
for(设i=0;i
比较两个对象的方法是将它们转换为JSON并检查结果字符串是否相等

function jsonEqual(a,b) {
    return JSON.stringify(a) === JSON.stringify(b);
} 
jsonEqual(user1, user2) // true in all cases

从该链接获取的示例仅供参考,您将了解。

如果您只想比较
\u id
名称
&
姓氏
属性,您可以手动检查每个属性。这种方法可能是满足您需求的最有效的方法

function isEqual(documentOne, documentTwo) {
  return (documentOne._id.toString() === documentTwo._id.toString() && documentOne.name === documentTwo.name && documentOne.surname === documentTwo.surname);
}

isEqual(a[0], result[0]);

比较json对象的方式不正确。检查这个“MukHysHARMA”,我必须把它复制到某个地方或什么地方?你还应该考虑<代码> A.Syid < /Cord>是一个字符串,而结果[0 ]。