我有一个云函数来增加计数器,只有当某些字段在快照中发生变化时(本例中的“练习”)。
在我的云功能中,我有这样的检查,它总是出于某种原因而触发:
const before = snapshot.before.data();
const after = snapshot.after.data();
if (before['exercises'] !== after['exercises']) {
console.log(before['exercises']);
console.log(after['exercises']);
// Increment the counter...
}日志语句是相同的:
[ { exerciseId: '-LZ7UD7VR7ydveVxqzjb',
title: 'Barbell Bench Press' } ] // List of exercise objects
[ { exerciseId: '-LZ7UD7VR7ydveVxqzjb',
title: 'Barbell Bench Press' } ] // Same list of exercise objects如何确保快照中的这些值被同等对待?
谢谢。
发布于 2019-03-07 08:00:09
在Javascript中,对象是引用类型。如果你做了这个:
{a: 1} === {a: 1}这将是错误的,因为Javascript正在读:
ObjectReference1 === ObjectReference2
对于determine the equality of two Javascript Objects,您可以做一些事情,但是如果您的对象是那么小的话,我只需要做一个JSON.stringify等式
const before = {
exerciseId: '-LZ7UD7VR7ydveVxqzjb',
title: 'Barbell Bench Press' }
const after = {
exerciseId: '-LZ7UD7VR7ydveVxqzjb',
title: 'Barbell Bench Press'
};
function areEqual(object1, object2) {
return JSON.stringify(object1) === JSON.stringify(object2);
}
console.log(areEqual(before, after)); /// true
https://stackoverflow.com/questions/55037197
复制相似问题