2015-02-05 3 views
0

mongoose (mongoDB)로 node.js에서 사용할 라이브러리를 만들려고합니다. 내 라이브러리에서 사용자 is_admin (그룹 관리자)인지 단순히 확인하고 싶습니다. 내가 쿼리 반환 true 또는 false 원하는mongoose (mongodb)는 부울 쿼리를 반환합니다 .exec?

var UsersGroups = require('../models/users_groups'); 

is_admin = function(userid) 
{ 
    console.log('USERID : '+userid); 
    var query = UsersGroups.find({'user_id': userid}); 
    query.select('user_id'); 
    query.where('group_id').equals('54d2264ed9b0eb887b7d7638'); 
    return query.exec(); 
} 

module.exports = is_admin; 

:

var mongoose = require('mongoose'); 

module.exports = mongoose.model('UsersGroups',{ 
    user_id: String, 
    group_id: String 
}); 

여기 내 라이브러리 :

여기 내 모델입니다.

var is_admin = require('../library/mylib.js'); 

... 

if (is_admin(group.user_id)) 
{ 
    console.log('IS_ADMIN'); 
} 
else 
{ 
console.log('NOT_ADMIN'); 
} 

사람이 저를 코치 할 수

는이 같은 라이브러리를 호출?

답변

1

query.exec() 반환 약속 없음 부울 몽구스 스키마 및 모델을 사용하면 더 좋은 기능을 제공합니다.

당신이 사용자 그룹 확인하려면

var user = require('model/user'); 

user.findById("54d2264ed9b0eb887b7d7638", function(err, user){ 
    if(err) 
     return console.error(err.stack); 

    if(!user) 
     return console.error("User not found!"); 

    if(!user.isAdmin()) 
     console.log("User is not admin"); 
    else 
     console.log("User is admin"); 
}); 

, 당신은 당신이

0

그냥이 쿼리를 실행할 수 있습니다 원하는대로 isAdmin 기능을 변경할 수 있습니다 컨트롤러에서

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var UserSchema = new Schema({ 
    name: { type: String, required: true, trim: true } 
    // set user types as enumeration 
    type: { type: String, enum: ["admin", "user", "guest"], required: ture, default: 'user' } 
}); 

var User = mongoose.model('User', UserSchema); 

User.prototype.isAdmin = function(){ 
    return this.type === "admin"; 
} 

module.exports = User; 

예 사용자 모델

UsersGroups.find({'user_id': userid, 'group_id': '54d2264ed9b0eb887b7d7638'}).count().exec(); 

일치하는 쌍을 찾을 수 있습니다 - 자바 스크립트에서 진실 인 경우 1을 반환합니다. 존재하지 않으면 0을 반환합니다. 이는 위증입니다. if 문 안에서 사용할 수 있습니다.

관련 문제