MongoDB 컬렉션에서 데이터를 가져 와서 전역 객체에 저장하려고합니다. 나중에 HTML 템플릿으로 구문 분석해야합니다.MongoDB에서 데이터를 가져와 Node.js 및 Express.js의 전역 객체에 저장하십시오.
사용자 로그가 자신의 프로필에: 여기 내 코드는 우리가 자신의 프로젝트를 얻을 필요가 여기에 우리가 findeprojects() 함수를 호출
다음usrRouter.route('/profile')
.all(function (req,res,next) {
if(!req.user){
res.redirect('/');
}
next();
})
.get(function (req,res,userObj) {
// var proj = findprojects();
userObj = req.user;
var pro = {};
pro = findprojects(userObj);
res.render('index',{name:userObj.username, email:userObj.email});
//res.sendFile('profile.html',{root:path.join(__dirname,'../public'),},{name:userObj.username});
});
findeprojects 기능 코드는 다음과 같습니다
var findprojects = function(obj) {
var usern = obj.username;
mongodb.connect(url,function(err, db){
if(err) throw err;
var collection = db.collection('projects');
//console.log(usern);
collection.find({'pusername':usern});
cursor =db.collection('projects').find({ 'pusername': usern }).toArray(function(err,items){
//console.log(items);
var i;
for(i=0; i<items.length;){
userProjects.createdBy = items[i].pusername;
userProjects.proName = items[i].projectName;
userProjects.proType = items[i].projectType;
userProjects.proDesc = items[i].projectDesc;
//return userProjects;
i = i+1;
}
});
console.log(userProjects);
});
}};
내가 좋아 상단에 전역 객체를 선언 한 :
userProjects = {
createdBy:'',
proName:'',
proType:'',
proDesc:''
};
하지만이 findeprojects()를 호출 한 후 userprojects 객체를 콘솔 때 빈 값을 표시 기능.
당신은 루프 후이 값을 받고 있습니까? – abdulbarik
잔인하게 솔직하게 말하자면, Node의 비동기 성질을 다루는 방법을 모르는 것처럼 보입니다. 문제의 해결책이 아닌 전역 변수를 사용하여 문제를 해결하려고합니다. 훨씬 간단한 것으로 시작한다면 (게시하는 코드에 많은 움직이는 부분이 있음) 비동기 함수를 처리하는 방법에 대한 좋은 자습서를 읽는 것이 더 쉬울 것이라고 생각합니다. – robertklep
데이터를보고 싶다면'toArray' 메소드의 콜백 함수 측에서'console.log' 문을 움직일 수 있습니다. 그러나 나는 또한 @rokeryklep에 동의한다. – Mike