如何解决MongoDB仅在数据不存在的情况下使用Javascript插入数据
我正在创建Web抓取工具,我需要将数据存储在MongoDB中。我抓取一些数据并将其存储在变量调用项中。如果数据已经存在,我也不会将其添加到数据库中。所以这是我应该执行的resultAnalysis.mjs文件。我应该在这段代码中做些什么更改,因为它不会插入数据并且还会引发错误:
TypeError: Cannot destructure property 'lotNumber' of 'item' as it is undefined.
at file:///Users/AlainMolleyres/Desktop/scraper_V1/resultsAnalysis.mjs:48:11
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
这是我的代码
resultsAnalysis.mjs
mongoose
.connect(mongoURI,{ useNewUrlParser: true })
.then(() => console.log("MongoDB connected"))
.catch((err) => console.error(err));
export const compareAndSaveResults = (item) => {
try {
const Schema = mongoose.Schema;
const lotSchema = new Schema({
lotNumber: {},artistName: {},artworkNameOriginal: {},pictureUrl: {},artworkDate: {},signed: {},titled: {},technic: {},literature: {},provenance: {},dimension: {},lowEstimation: {},highEstimation: {},currency: {},soldPrice: {},lotUrl: {},});
const lot = mongoose.model("lot",lotSchema);
lot
.find({},function (err,lotList) {
return lotList;
})
.then((lotList) => {
if (lotList == "") {
console.log(`A new data was created:\n${JSON.stringify(item)}`);
const newLot = new lot(item);
return newLot.save().catch((err) => console.log(err));
}
const {
lotNumber,artistName,artworkNameOriginal,pictureUrl,artworkDate,signed,titled,technic,literature,provenance,lowEstimation,highEstimation,currency,soldPrice,dimensionInCm,lotUrl,} = item;
const dbId = lotList[0]._id;
const dbArtworkNameOriginal = lotList[0].artworkNameOriginal;
const dbLotUrl = newsList[0].lotUrl;
let catchDifference = false;
if (dbArtworkNameOriginal !== artworkNameOriginal) {
catchDifference = true;
} else {
dbLotUrl.forEach((elem,i) => {
if (elem !== lotUrl[i]) catchDifference = true;
});
}
if (catchDifference) {
console.log("A new evidence was found,updating database...");
mongoose.set("useFindAndModify",false);
return News.findOneAndUpdate({ _id: dbId },item);
}
console.log("File is equal to page,no lot to report");
})
.then(() => {
mongoose.disconnect();
})
.catch((err) => console.log(err));
} catch (err) {
console.error(err);
}
};
``
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。