를 통해 가까운 몽고 DB를 연결 나는 생각 등Nodejs, 콜백
실행 프로그램을 비동기 콜백의 문제를 가지고 : MongoDB를에
- 에 연결합니다.
- URL 만들기 - https://example.com + locArray에서 파트 추가.
- 요청 보내기 (각 요청).
- 데이터를 mongo db에 저장하십시오.
- 연결을 닫습니다.
문제 :
연결이 jsonDataFromApi에서 마지막 줄에 폐쇄 된 경우- dB로 저장된 각 요청의 모든 데이터 전에 "서버 인스턴스 풀은 파괴되었다"
그래서
callback(db)
을 다른 장소로 보냈습니다 -closeMongoDb
- 오류가 나타났습니다
" '정의되지 않은'닫기 '속성을 읽을 수 없습니다. 내가 생각
는 문제가 비동기로,이 비동기에 문제가 확실히있다 등
const MongoClient = require('mongodb').MongoClient;
const Array = require('node-array');
const request = require('request');
var locationArray = [
'location1',
'location2',
'location3',
'location4'
];
var dataFromLocApi = (loc, callback) => {
request({
url: `https://example.com/${loc}`,
json: true
}, (error, response, body) => {
if (error){
callback('Error connection to url.');
} else{
callback(undefined, body.result);
}
});
};
var jsonDataFromApi = (urldb, callback) => {
MongoClient.connect(urldb, (err, db) => {
if (err) {
console.log('MongoDb connection error.');
}
console.log('MongoDb - connected.');
locationArray.forEachAsync(function(loc, index, arr) {
dataFromLocApi(loc, (errorMessage, results) => {
if (errorMessage) {
console.log(errorMessage);
} else {
console.log(JSON.stringify(results, undefined, 2));
db.collection('testCollection').insert(results, function(error, record) {
if (error)
throw error;
console.log("data saved");
});
}
});
}, function() {
console.log('complete');
});
callback(db);
});
}
var closeMongoDb = (urldb, callback) => {
jsonDataFromApi(urldb, (error, db) => {
if (error){
callback('Close connection - failure');
} else{
db.close();
console.log('MongoDb connections was closed.');
}
});
}
closeMongoDb('mongodb://127.0.0.1:27017/testDb', (err, db) => {
console.log('DONE');
});
'closeMongoDb' 함수 코드를 붙이시겠습니까? –
모든 코드입니다. closeMongoDb는 함수가 아닙니다. – profiler
그 다음은 무엇입니까? –