몽구스 문서 집합을 일반 오래된 JavaScript 개체로 반환하려고합니다. 나는 데이터베이스의 쿼리 처리하는 user.js
모듈이 있습니다mongoose document to JSON
module.exports = function() {
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
console.log('connection successful');
});
var outingSchema = mongoose.Schema({
id : String,
location : String,
date : Date,
participantCount : Number,
confirmedParticipantCount : Number,
group : String
});
var Outing = mongoose.model('Outing', outingSchema);
this.dashboard = function() {
var result = Outing.find({}, function(err, outings) {
console.log('##################');
});
db.close();
return result;
}
}
을 그리고 이것은 내 주요 server.js
파일입니다
io.of('/user').on('connection', function(socket) {
console.log('Incoming connection to ' + socket.namespace.name);
var User = require('./real/user.js');
var UserObject = new User();
socket.on('dashboard', function(data) {
socket.send(JSON.stringify(UserObject.dashboard(), null, 3));
})
}); 약자로
, 이것은 항상 예외가 발생합니다 나는 몽구스 문서 객체가 원형 구조의 일종을 가지고 있기 때문에 이런 일이 있으리라 믿고있어
TypeError: Converting circular structure to JSON
합니다. 어떻게하면 대시 보드() 메서드가 JSON.stringify()
을 사용하여 JSON으로 변환 할 수있는 일반 JavaScript 객체를 반환 할 수 있습니까?
나는 각 문서에 outings' and calling the
toObject()`메소드를 반복 해 보았습니다 만, 몽구스 문서 객체도 반환합니다.
이상한 점은 console.log('##################');
문이 실행될 수 없다는 것입니다 (콘솔에 출력이 표시되지 않음). 이것이 콜백 함수에 있기 때문입니까? 기타 콜백 함수의 console.log()
문이 정상적으로 작동합니다.
이것은 트릭을 수행하는 것으로 보입니다. 나는 처음부터 잘못하고있는 것을 정말로 이해하지 못합니다. '대시 보드'가 콜백이어야하는 이유는 무엇입니까? 또한 JSON 문자열은'_id' 및'__v' 속성을 포함합니다. 그 표현에서 제외시킬 수있는 방법이 있습니까? – faridghar
후속 질문의 두 번째 부분을 잊어 버릴 수 있습니다. 나는'query.select ('- excludedField')'를 사용하여 투영을 수행했습니다. '대시 보드'를 콜백으로 변환해야하는 이유를 설명해 주시겠습니까? – faridghar
nodejs는 비 차단이므로 쿼리 결과를 바로 가져 오지 못합니다. 그들은 몇몇 언어와 같은 성명서에서 반환되지 않습니다. 결과가 준비되면 콜백 함수가 실행됩니다. nodejs 및 콜백에서 읽습니다. http://www.theprojectspot.com/tutorial-post/nodejs-for-beginners-callbacks/4 –