레이블이 mongoose인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mongoose인 게시물을 표시합니다. 모든 게시물 표시

2015년 11월 24일 화요일

몽고DB - mongoose 사용법[ 쿼리생성 ]

케이스가 1일때는 google_id에 대해 검색하고 싶고
2일때는 apple_id에 대해 검색하고 싶다면 아래와 같이
쿼리를 생성할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var query;
switch (status) {
case 1:
    query = Data_id.findOne({ google_id : connect_id });
    break;
case 2:
    query = Data_id.findOne({ apple_id : connect_id });
    break;       
}
query.exec(function(err, dt){
    if(err){
        console.log("err : ", err);
    }
});
 
cs

몽고DB - Mongoose 사용법[ find와 findOne의 차이 ]

model폴더 밑에 notice.js- notice schema를 작성했다는 가정하에

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var mongoose = require('mongoose');
var bcrypt   = require('bcrypt-nodejs');
var Schema   = mongoose.Schema;
var validator = require('validator');
var noticeSchema = Schema({
        txt     : String,
        link    : String,
        to_t    : Number,
        del     : Number,
        nation  : String,
        v       : { type: Numberdefault0 }
    },{
        versionKey: false
});
mongoose.model('notice', noticeSchema);
 
cs

findOne을 사용시에는

1
2
3
4
5
6
7
8
9
10
11
12
require('../models/notices');
var notice = mongoose.model('notice');
notice.findOne({txt:"hello"}, function(err, notice_dt){
        if (err){            
            res.send(err);
        }else {
            if( notice_dt == null){
                ;
            }
        }
});
 
cs

db에서 자료을 찾았을 때
정보가 없는지를 아는 방법은 7번줄 처럼
notice_dt == null
을 사용합니다.

find를 사용시에는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require('../models/notices');
var notice = mongoose.model('notice');
notice.find({txt:"hello"}, function(err, notice_dt){
        if (err){            
            res.send(err);
        }else {
            if( notice_dt.length == 0){
                ;
            }else{
                console.log("notice text : ", notice_dt[0].txt);
            }
        }
});
 
cs

정보가 없는지를 아는 방법은 7번줄 처럼
 notice_dt.length == 0
를 사용합니다.
왜냐하면, notice_dt의 값이 배열로 넘어오기 때문입니다.

2015년 10월 14일 수요일

몽고DB - mongoose 사용법[ 다수 데이타저장 ]

다수의 데이타를 한번에 저장하려면

coupon이라는 스키마가 존재한다고 가정했을때

save_coupon = [];

// 저장할 다수의 데이타 생성
for(var i = 0; i < 10; i++){
    new_coupon = {}; // new_coupon = new coupon; 은 에러가 발생한다.
    new_coupon.item = item;
    new_coupon.qty = qty;
    new_coupon.del = 0;
    save_coupon[i] = new_coupon;
}

coupon.collection.insert(save_coupon, function(err, cp_dt){
    if(err){
        return;
    }else{
    }
});

다수의 데이타 저장을 위해
coupon.collection.insert
을 사용한다.

데이타 생성시 {}로 오브젝트를 생성해야지 - new_coupon = {};
몽고디비 스키마를 이용해 만들면 - new_coupon = new coupon;

range error maximum call stack size exceeded
에러가 발생한다.