Я следую этому руководству: https://anmolkoul.wordpress.com/2015/06/05/interactive-data-visualization-using-d3-js-dc-js-nodejs-and-mongodb /
После решения нескольких проблем вроде бы все работает, но на странице не отображаются данные из MongoDB. Похоже, он пытается подключиться, но всегда терпит неудачу.
Я даже поместил свою коллекцию Mongo в mLab, чтобы посмотреть, сможет ли она подключиться к чему-то другому, кроме локального хоста. Это не так.
У меня есть файл Server.js
// modules =================================================
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
// configuration ===========================================
// config files
var port = process.env.PORT || 8080; // set our port
var db = require('./config/db');
// connect to our mongoDB database (commented out after you enter in your own credentials)
connectionsubject = mongoose.createConnection(db.urlSubjectViews);
// get all data/stuff of the body (POST) parameters
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(bodyParser.urlencoded({ extended: true })); // parse application/x-www-form-urlencoded
app.use(methodOverride('X-HTTP-Method-Override')); // override with the X-HTTP-Method-Override header in the request. simulate DELETE/PUT
app.use(express.static(__dirname + '/public')); // set the static files location /public/img will be /img for users
// routes ==================================================
require('./app/routes')(app); // pass our application into our routes
// start app ===============================================
app.listen(port);
console.log('Magic happens on port ' + port); // shoutout to the user
exports = module.exports = app; // expose app
Файл db.js для указания базы данных:
module.exports = {
urlSubjectViews: 'mongodb://localhost:27017/donorschoose',
}
файл SubjectViews.js для указания нужных мне данных
// define our nerd model
// module.exports allows us to pass this to other files when it is called
module.exports = connectionsubject.model('', {}, 'projects');
И файл Route.js для настройки маршрута для данных JSON
var Subjects = require('./models/SubjectViews');
module.exports = function(app) {
// server routes ===========================================================
// handle things like api calls
// authentication routes
// sample api route
app.get('/api/data', function(req, res) {
// use mongoose to get all nerds in the database
Subjects.find({}, {'_id': 0, 'school_state': 1, 'resource_type': 1, 'poverty_level': 1, 'date_posted': 1, 'total_donations': 1, 'funding_status': 1, 'grade_level': 1}, function(err, subjectDetails) {
// if there is an error retrieving, send the error.
// nothing after res.send(err) will execute
if (err)
res.send(err);
res.json(subjectDetails); // return all nerds in JSON format
});
});
// frontend routes =========================================================
app.get('*', function(req, res) {
res.sendfile('./public/index.html');
});
}
Это моя коллекция в Studio 3T: Коллекция Mongo
Я знаю, что он указывает на базу данных, потому что, когда я смотрю на localhost:8080/api/data, страница загружается, но через некоторое время истекает время ожидания. Это только кажется, что это у меня такая проблема??
какие версии сервера/узла mongoose/mongodb вы используете?
Mongo Shell v3.4.9, Express 4.5.1, Mongoose 3.8.0, узел 8.6.0