Hi campers,
I’ve been working on this project at the same time as my URL shortener (Thank you @kevinSmith again) and I am stuck
So, before anything, here is my code
server.js
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const mongo = require('mongodb').MongoClient;
const cors = require('cors')
const methods = require('./methods')
let db = null;
mongo.connect(process.env.URI, (err, database) => {
if (err) throw err;
db = database;
});
app.use(cors())
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
app.use(express.static('public'))
app.get('/', (req, res) => {
res.sendFile(__dirname + '/views/index.html')
});
app.post("/api/exercise/new-user", (req, res) => {
var collection = db.collection('users');
methods.newUserHandler(req, res, collection);
})
app.get("/api/exercise/users", (req, res) => {
var collection = db.collection('users');
methods.getUsers(req, res, collection);
})
app.post("/api/exercise/add", (req, res) => {
var collection = db.collection('users');
methods.addHandler(req, res, collection);
})
app.get("/api/exercise/log", (req, res) => {
var collection = db.collection('users');
methods.getLog(req, res, collection);
})
// Not found middleware
app.use((req, res, next) => {
return next({status: 404, message: 'not found'})
})
// Error Handling middleware
app.use((err, req, res, next) => {
let errCode, errMessage
if (err.errors) {
// mongoose validation error
errCode = 400 // bad request
const keys = Object.keys(err.errors)
// report the first validation error
errMessage = err.errors[keys[0]].message
} else {
// generic or custom error
errCode = err.status || 500
errMessage = err.message || 'Internal Server Error'
}
res.status(errCode).type('txt')
.send(errMessage)
})
const listener = app.listen(process.env.PORT || 3000, () => {
console.log('Your app is listening on port ' + listener.address().port)
})
package.json
{
"name": "fcc-exercise-tracker",
"version": "0.1.0",
"description": "A REST API project, part of Free Code Camp's curriculum",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.3",
"mongoose": "^5.1.4",
"mongodb": "^3.0.10",
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"shortid": "^2.2.8",
"chrono-node": "^1.3.5"
},
"engines": {
"node": "6.9.1"
},
"repository": {
"url": "https://gomix.com/#!/project/welcome-project"
},
"license": "MIT",
"keywords": [
"node",
"gomix",
"express"
]
}
App is running good.
Your app is listening on port 3000
… however, when I try to create username, it is showing me
db.collection is not a function
I have checked online before posting here and from what I was able to see, this is an issue with MongoDB but I was not able to find anywhere the final resolution as to how to resolve this issue so I was just wondering if someone can help me out with this.
Thank you in advance for any assistance.