gpt4 book ai didi

javascript - 如何将 Mongoose 对象与 JSON 对象进行比较?

转载 作者:可可西里 更新时间:2023-11-01 10:28:49 26 4
gpt4 key购买 nike

这是我的问题。

一方面,我有一个 Mongoose 对象的普通对象表示。

另一方面,我有一个直接来自数据库中的 findOne 的 Mongoose 对象。

我想做的是检查两个对象的两个属性之间是否有任何不同。让我们以这种模型为例:

{
_id: 'abc',
id: 'abc',
things: [{
_id: 'def',
id: 'def',
other_things: [{
_id: 'ghi',
id: 'ghi',
foo: 'bar'
}]
}]
}

我想比较 myplainobject.thingsmydbobject.things

但是,使用下划线_.isEqual(myplainobject.things, mydbobject.things)总是失败。

这是由于在第一种情况下是 string 而在另一种情况下是 ObjectID

虽然有很多方法可以将 ObjectIDstring 进行比较,但是是否有一种优雅的方法来比较对象?或者我是否必须实现我自己的解决方案来遍历每个子文档并手动比较属性?

最佳答案

由于此时我没有足够的声誉向 drinchev 的答案添加评论,我将在此处添加。首先,按照 drinchev 的建议使用 toObject() 方法,然后您可以使用类似于 https://stackoverflow.com/a/14368628/3365039 中的答案的方法。 (稍作修改)以确保键的顺序相同。

function compareKeys(a, b) {
var aKeys = Object.keys(a).sort();
var bKeys = Object.keys(b).sort();

// Check that the objects contain the same keys.
if (JSON.stringify(aKeys) !== JSON.stringify(bKeys)) {
return false
}

// Check that the keys in each object contain the same values.
for (const key in aKeys) {
if (a[key] !== b[key]) {
return false
}
}

return true
}

compareKeys(mongooseModel.toObject(), jsObject)

关于javascript - 如何将 Mongoose 对象与 JSON 对象进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30095176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com