我正在将数据保存到数据库中,并努力更新现有文档。我希望我的应用检查文档是否已存在以及信息是否已更改。如果该文档存在且信息未更改,则应用会跳过该文档。一切正常。如果数据已更改,我还希望它更新文档。我该如何实现?
这是我负责保存数据的代码:
const hash = md5(price + km);
const query = {
hash: hash
},
options = { upsert: true };
Car.findOneAndUpdate(query, options, function(error, result) {
if (!error) {
if (!result) {
result = new Car({
make: make,
model: model,
year: yearInt,
km: kmInt,
price: priceInt,
currency: currency,
link: link,
imageUrls: images,
hash: hash
});
result.save(function(error) {
if (!error) {
console.log('car saved!' + result);
} else {
throw error;
}
});
} else {
console.log('already in db');
}
} else {
console.log(error);
}
});
如您所见,我正在使用md5包为要保存到数据库的每辆车创建一个哈希。它使用公里和价格组合来创建哈希。因此,当“公里”或“价格”变量的数据更改时,哈希值也会更改。而如果需要的话,我想更新数据库中的公里数和/或价格数据。我应该使用_id而不是哈希来查找文档吗?
我也尝试这样的事情,以查看哈希是否已更改但无法正确处理:
if (query.hash != result.hash) {
car.update({
make: make,
model: model,
year: yearInt,
km: kmInt,
price: priceInt,
currency: currency,
link: link,
imageUrls: images,
hash: hash
});
}
如果有人能以此将我推向正确的方向,我将不胜感激。