2017-09-18 1 views
0

내보낼 몽구스 모델 (사용자)이 포함 된 모듈을 만들었습니다. 지금은 속성 이름과 나이만 들어 있습니다. 여기 몽구스 : 파일의 배열로 find() 결과를 옮깁니다.

var mongoose = require('mongoose'); 
 
var db = mongoose.createConnection('localhost', 'moviemeter'); 
 

 
var schema = mongoose.Schema({name:String, age: Number}); 
 
var User = db.model('user', schema); 
 

 
module.exports = User;

,이 모델을 액세서과의 모든 개체를 발견하고 싶습니다. 그런 다음 내 userArr 변수를 데이터베이스의 모든 사용자로 채울 수 있기를 원하지만 첫 번째 console.log가이 객체의 이름을 반환하더라도 배열로 푸시하지는 않습니다. 이것에 대한 이유는 무엇이며 어떻게 해결할 수 있습니까? 당신이 asynchon입니다 대해 forEach를 사용하고 있기 때문에
// user module 
 
var User = require('./modelModules/memberModel'); 
 
var userArr = []; 
 
var users = User.find({}, function (err, users) { 
 

 
    console.log(users[0].name) 
 
    users.forEach(function(user) { 
 

 
     userArr.push = user; 
 
    }); 
 
}); 
 
console.log(userArr[0].name)

+0

이것은 고전적인 경우입니다 - _User.find_은 비동기 작업입니다. 비동기 프로그래밍의 기본 개념을 이해해야합니다. 비동기로 처리하려고 할 때 절차 코드를 작성할 수 없습니다. 옵션으로 약속 또는 비동기/대기가 사용됩니다. –

+0

감사합니다. 그 주제를 살펴 보겠습니다. 이것에 대해 좋은 학습 자료를 추천 해 주시겠습니까? –

답변

0

때문이다. 그리고 당신의 밀어

userArr.push(yourUser) 

당신이이 같은 "에 대한"로 시도 할 수있는 기능이 있어야한다?

// user module 
var User = require('./modelModules/memberModel'); 
var userArr = []; 
User.find({}, function (err, users) { 

    console.log(users[0].name) 

    users.forEach(function(user) { 
    for (var i = 0; i < users.length; i++) { 
    userArr.push(user); 
    } 
    console.log(userArr[0].name); 
}); 

희망이 있습니다.

0

그것은 배열 푸시의 잘못된 사용을 보인다, 당신은 다음과 같이 사용한다 :

userArr.push(user); 
+1

하하, 네가 멍청한 실수 야. 불행히도이 문제에는 훨씬 더 잘못된 점이 있습니다. –

+0

문제 없습니다. 행운을 빕니다. –

관련 문제