显示'db.get不是函数'NodeJs,MongoDB

问题描述:

制作一个投票应用程序,该应用程序由以下两个模型用户和投票以及由两个集合用户和民意调查组成的数据库组成。显示'db.get不是函数'NodeJs,MongoDB

user.js的

'use strict'; 

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var User = new Schema({ 
    github: { 
     id: String, 
     displayName: String, 
     username: String, 
     publicRepos: Number 
    }, 
    nbrClicks: { 
     clicks: Number 
    } 
}); 
module.exports = mongoose.model('User', User); 

Poll.js

'use strict'; 

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var Poll = new mongoose.Schema({ 
    title: { type: String, required: true }, 
    creator: String, 
    choices: [String], 
    votes: [Number] 
}); 
module.exports = mongoose.model('Poll', Poll); 

,这是路由部分

'use strict'; 
require('dotenv').load(); 
var path = process.cwd(); 
var ClickHandler = require(path + '/app/controllers/clickHandler.server.js'); 
var mongo = require('mongodb'); 
var mongoose = require('mongoose'); 
var db = mongoose.createConnection(process.env.MONGO_URI); 

module.exports = function (app, passport) { 
    function isLoggedIn (req, res, next) { 
     if (req.isAuthenticated()) { 
      return next(); 
     } else { 
      res.redirect('/login'); 
     } 
    } 

    var clickHandler = new ClickHandler(); 
    app.route('/').get(isLoggedIn, function (req, res) { 
     //console.log(display-name.profile-value); 
     res.render(path + '/public/index.jade'); 
    }); 
    app.route('/polls').get(function(req, res) { 
     var polls = db.get('polls'); 
     console.log(polls); 
     res.render(path + '/public/polls.jade'); 
    }) 

这是错误被抛出

TypeError: db.get is not a function 
at /home/ubuntu/workspace/app/routes/index.js:39:22 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) 
at next (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:131:13) 
at Route.dispatch (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:112:3) 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) 
at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:277:22 
at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12) 
at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10) 
at SessionStrategy.strategy.pass (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:325:9) 
at SessionStrategy.authenticate (/home/ubuntu/workspace/node_modules/passport/lib/strategies/session.js:71:10) 
at attempt (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:348:16) 
at authenticate (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:349:7) 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) 
at trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13) 
at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7 
at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12) 
at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10) 
at initialize (/home/ubuntu/workspace/node_modules/passport/lib/middleware/initialize.js:53:5) 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) 
at trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13) 
at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7 
at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12) 
+0

我会猜测问题是'db.get'不是一个函数。你会想用'Poll.find' [芒ose的文档](http://mongoosejs.com/docs/) – numbers1311407

首先,您需要将Poll导入路由文件。

var Poll = require('./PATH_TO_POLL/Poll'); 

然后为@ numbers1311407形容,如果你想返回所有已保存的文件投票尝试:

Poll.find(function (err, polls) { 
    if (err) return console.error(err); 
    console.log(polls); 
}) 

编辑:

上module.exports的更多信息,可以发现here

+0

做些什么感谢,现在它的工作是 –

+0

但实际上我已经使用模块导出了轮询模型.exports,所以不能在目录中的其他地方简单地使用require方法。 –

+0

欢迎您,很高兴为您提供帮助。你必须要求''Poll',你在这里调用它'module.exports = mongoose.model('Poll',Poll);'按惯例表明你应该用相同的名称来调用它,但你可以称它为任何东西。坚持命名约定,它使你的代码更易于阅读。 – alexi2