making voting app consists of following 2 models users , polls , database consisting of 2 collections users , polls.
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);
and route part
'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'); })
this error being thrown
typeerror: db.get not function @ /home/ubuntu/workspace/app/routes/index.js:39:22 @ layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) @ next (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:131:13) @ route.dispatch (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:112:3) @ layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) @ /home/ubuntu/workspace/node_modules/express/lib/router/index.js:277:22 @ function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12) @ next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10) @ sessionstrategy.strategy.pass (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:325:9) @ sessionstrategy.authenticate (/home/ubuntu/workspace/node_modules/passport/lib/strategies/session.js:71:10) @ attempt (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:348:16) @ authenticate (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:349:7) @ layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) @ trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13) @ /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7 @ function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12) @ next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10) @ initialize (/home/ubuntu/workspace/node_modules/passport/lib/middleware/initialize.js:53:5) @ layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5) @ trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13) @ /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7 @ function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12)
first need import poll route file.
var poll = require('./path_to_poll/poll');
then @numbers1311407 has described, if want return saved poll documents try:
poll.find(function (err, polls) { if (err) return console.error(err); console.log(polls); })
edit:
more information on module.exports can found here
Comments
Post a Comment