1
대학 과정이 방금 mongodb를 시작했으며 작업 할 과제가 있습니다. 지금까지 모든 것이 잘 진행되고있는 것 같지만 응답에 값을 반환하는 문제가 발생했습니다. 범위 문제는 항상 나를 괴롭히는 것 같습니다. 여기값을 반환 할 수 없습니다. (내가 믿는 범위 문제)
var querystring = require("querystring"),
fs = require("fs"),
mongodb = require('mongodb'),
server = new mongodb.Server('localhost',27017, {auto_reconnect: true}),
db = new mongodb.Db('testdb',server);
db.createCollection('testCollection', {safe : true}, function(err, collection){});
function createData(response, postData) {
var fname = querystring.parse(postData).fname;
var lname = querystring.parse(postData).lname;
var phone = querystring.parse(postData).phone;
var info = {'fname':fname,'lname':lname,'phone':phone};
var infojson = JSON.stringify(info);
var infojson = JSON.parse(infojson);
db.open(function(err, db) {
if(!err) {
db.collection('testCollection', function(err, collection) {
collection.insert(infojson, {safe : true}, function(err, result) {
if(err) {
console.log(err);
} else {
console.log(result);
db.close();
}
});
});
}
return result;
});
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("You have added " + result + " to the database.");
response.end();
}
나는 점점 오전 오류입니다 :
/home/ubuntu/151_final/requestHandlers.js:36
response.write("You have added " + result + " to the database.");
^
ReferenceError: result is not defined
at Object.createData [as /createData] (/home/ubuntu/151_final/requestHandlers.js:36:40)
at route (/home/ubuntu/151_final/router.js:4:19)
at IncomingMessage.<anonymous> (/home/ubuntu/151_final/server.js:18:4)
at IncomingMessage.EventEmitter.emit (events.js:85:17)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at Socket.socket.ondata (http.js:1690:22)
at TCP.onread (net.js:402:27)
범위도 마찬가지입니다. 비동기 특성으로 인해 값이 올바르지 않지만 변수 부족이 범위 문제입니다. –
좋아요! 도움 Nicola 주셔서 감사합니다. 나는 그 전에 다른 모든 것의 바깥에서 반응을하는 데 너무 익숙해 있었고, 나는 그 것을 다른 사람에게 중첩 시키려고 생각하지 않았습니다. –
글쎄 지금은 아무런 오류가 없지만, 이제는 "당신은 [object Object]를 데이터베이스에 추가했습니다." 그럼에도 불구하고 객체는 console.log 메시지에 잘 나타납니다. –