node.Js

mongoose의 2중 구조(2 layer)의 저장과 find, findOne 사용법에 대해서

개발자_이훈규 2016. 1. 17. 17:25

2016. 1. 17 18:00

이 페이지가 정확히 내가 말한 의도대로 질문이 되어 있고, 대답이 되어 있다.

http://stackoverflow.com/questions/11867263/mongodb-schema-structure-and-queries


2016. 1. 17 17:30

3시간동안 이 문제를 해결하고 싶어서 낑낑대다가 아래의 글을 보고 힌트를 얻어서 처리했습니다. 

http://stackoverflow.com/questions/19695058/how-to-define-object-in-array-in-mongoose-schema-correctly-with-2d-geo-index



결론은 schema를 2중으로 만들면 find할때도 2중으로 해야합니다.


1. schema정의    


var mongoose = require('mongoose');


var userSchema = mongoose.Schema({

    idpw : {

        username : String,

        password : String

    }

});


module.exports = mongoose.model('User', userSchema);


2. find 하는 방법

(router에서...)


        // find function 

        User.findOne({'idpw.username':username, 'idpw.password':password}, function(err, user) {

           console.log(user); 

           console.log(user.idpw.username); 

        });



정리하자면, find에서 username이 1111을 찾고 싶다면, 

대괄호([])에 둘러쌓인 중괄호({})의 층을 만들어 줘야 합니다.