2016-11-01 1 views
0

aggregate을 사용하고 있지만 TypeError: users.aggregate is not a function을 사용하여 콜렉션을 쿼리하려고합니다. 내가 MongoDB의 버전 3.2을 실행하는거야MongoDB - TypeError : users.aggregate가 함수가 아닙니다.

./app.js (에 맞게 감소)

var express = require('express'); 
var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/mydb'); 
var users = require('./routes/users'); 
var app = express(); 

app.use(function(req, res, next) { 
    req.db = db; 
    next(); 
}); 

app.use('/users', users); 
module.exports = app; 

./routes/users.js

var express = require('express'); 
var router = express.Router(); 

router.get('/test', function(req, res) { 
    var users = req.db.get('users'); 

    users.aggregate([{ $match: { username: 'test0' }}], function(err, data) { 
    res.json(data); 
    }); 
}); 

module.exports = router; 

: 여기에 내 코드입니다 .10 위의 쿼리는 콘솔에서 정상적으로 작동합니다. 나는 해결책을 찾아 보았고 이미 모두 완료 한 MongoDB 버전을 확인하기를 제안했다. 나도 다른 게시물에서 제안한대로 req.db.collection('users').aggregate을 시도했으며 비슷한 오류 메시지가 나타납니다 : req.db.collection is not a function. 내가 뭘 놓치고 있니?

편집 : users.find({ username: 'test0' }, func...을 실행하면 올바른 데이터가 반환됩니다.

EDIT2 : 추가 코드가 추가되었습니다.

+0

어디에서'req.db.get'? 너 그거 내보내는거야? –

+0

mongodb에 연결하기 위해 어떤 라이브러리를 사용하고 있습니까? – QoP

+0

@QoP 스님을 사용 중입니다 – TestWell

답변

0

이렇게 할 수 있습니다.

var app = require('express')(); 
var expressMongoDb = require('express-mongo-db'); 

app.use(expressMongoDb('mongodb://localhost/test')); 

app.get('/', function (req, res, next) { 
    req.db // => Db object 
}); 
+0

나는 데이터베이스를 그냥 내 괜찮아요 내 'req.db.get ('users')'. 나는'find()','findOne()','update()'그리고'insert()'할 수 있지만'aggregate'는 실패하고있다. – TestWell

0

나는 이것을 시도했다. 그것은 내 지역에서 일하고있다.

var app = require('express')(); 

const db = require('monk')('localhost/test') 

app.use(function(req,res,next){ 
req.db = db; 
next(); 
}); 

app.get('/', function (req, res, next) { 
    var db = req.db; 
    var users = db.get('users'); 

    users.aggregate([ 
    {$match: { firstName: 'Test 2' }} 
    ]).then(function(docs) { 
    console.log(docs) 
    }) 
}); 

app.listen(3010, function() { 
    console.log('Example app listening on port 3010!'); 
}); 
+0

시간을내어 주셔서 감사합니다.하지만 특히 골재로 수도사 도서관 문제를 검색 한 후에 답변을 찾았습니다. 그것은 지원되지 않으며 사용자 컬렉션을'users.col.aggregate()'와 함께 사용해야했습니다. – TestWell

관련 문제