操作 `countries.findOne()` 缓冲在 10000 毫秒后超时"/>
创建城市时出错 MongooseError:操作 `countries.findOne()` 缓冲在 10000 毫秒后超时
我正在尝试以编程方式从 csv 文件上传到 mongodb。我已经尝试了所有其他解决方案,并确保我的 ip 已列入白名单并且连接已正确建立。
我仍然收到此错误: 创建城市时出错MongooseError:操作
countries.findOne()
缓冲在10000ms后超时
下面是我的代码,我从命令行运行它。
const csv = require('csv-parser');
const fs = require('fs');
//const geocoder = mbxClient({ accessToken: 'YOUR_ACCESS_TOKEN_HERE' });
const { Country } = require('../models/country');
const { City } = require('../models/city');
const { Overall } = require('../models/overall');
const mbxClient = require("@mapbox/mapbox-sdk/services/geocoding");
const mapboxToken = process.env.MAPBOX_TOKEN;
const geocoder = mbxClient({ accessToken: mapboxToken });
const createCity = async ({ location, country, description, cjLink }) => {
const creator = '641e6851ad1041163852d500';
const images = [];
console.log(country)
try {
const geoData = await geocoder
.forwardGeocode({
query: location,
limit: 1,
})
.send();
const geometry = geoData.body.features[0].geometry;
const newCountry = await Country.find({ name: country });
if (!newCountry) {
console.log('Country not found');
return null;
}
const city = new City({
creator,
location,
geometry,
country: newCountry[0]._id,
url: '',
cjLink: '',
description: '',
});
const overall = new Overall({
name: location,
creator,
location,
geometry,
country: newCountry[0]._id,
url: '',
cjLink: '',
description: '',
});
overall.url = `/cities/${city._id}`;
city.url = `/cities/${city._id}`;
overall.save();
city.save();
return city;
} catch (error) {
console.log("error during create city", error);
return null;
}
};
const importCitiesFromCSV = async (filePath) => {
try {
const csvData = fs.readFileSync(filePath, 'utf-8');
const rows = csvData.trim().split('\n');
const headers = rows.shift().split(',');
const cities = rows.map(row => {
const values = row.split(',');
return headers.reduce((obj, header, index) => {
obj[header] = values[index];
return obj;
}, {});
});
for (let i = 0; i < cities.length; i++) {
const { location, country, description, cjLink } = cities[i];
const newCity = await createCity({ location, country, description, cjLink });
if (newCity) {
console.log(`Created city: ${newCity.location}`);
}
}
console.log('Finished importing cities.');
} catch (error) {
console.log('Error importing cities from CSV', error);
}
};
// Example usage:
importCitiesFromCSV('./testData.csv');
下面是csv,只是一些示例数据来测试它:
回答如下:location,,name,,country,,description,,cjLink “卡尔加里, Alberta,Canada",,Canada,,Canada,,,, "渥太华, 安大略省, 加拿大",,加拿大,,加拿大,,,,
你能分享你连接 mongoDB 的代码吗?问题是您的服务器无法连接到您在
mongoose.connect()
. 中提供的 MongoDB 数据库
我遇到了同样的问题,这些链接帮助了我。我想这些也会对你有所帮助。
- https://github/Automattic/mongoose/issues/9732
- MongoDB 缓冲
- https://dev.to/arunkc/solve-mongooseerror-operation-x-find-buffering-timed-out-after-10000ms-3d3j
更多推荐
创建城市时出错 MongooseError:操作 `countries.findOne()` 缓冲在 10000 毫秒后超时
发布评论