Javascript Nodejs Mongo结果与复制的结果不同
我对MongoDB有问题。当我做一些像: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,结
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>是一个字符串,而