Javascript 均值数据库查询中的空响应

Javascript 均值数据库查询中的空响应,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我试图让Node.js服务器与数据库通信,以便将其扩展到一个有角度的前端。我有一个向数据库发出请求的路径,该数据库应该返回整个database 5文档。我与数据库建立了连接,因为我可以在刷新服务器时看到它已连接 我将尝试仅列出以下相关代码: 正在加载模块 var express = require('express'); var morgan = require('morgan'); var mongoose = require('mongoose'); var bodyParser = req

我试图让Node.js服务器与数据库通信,以便将其扩展到一个有角度的前端。我有一个向数据库发出请求的路径,该数据库应该返回整个database 5文档。我与数据库建立了连接,因为我可以在刷新服务器时看到它已连接

我将尝试仅列出以下相关代码:

正在加载模块

var express = require('express');
var morgan = require('morgan');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var app = express();
定义数据库架构并连接

// Database connection and scheme ===================
mongoose.connect('mongodb://localhost/data/');

var schema = mongoose.Schema({
    date: 'String',
    newProofs: [Number],
    changes: [Number],
    output: [Number]
});

var TEST2014 = mongoose.model('TEST2014', schema);
中间件配置。我不知道methodOverride做什么。我相信主体解析器允许响应是JSON

//  Application middleware and configurations ==============
app.set('view engine', 'ejs');

app.use(express.static(__dirname + '/public'));
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended':'true'}));                    // parse application/x-www-form-urlencoded
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(methodOverride());
向数据库发出请求的路径

app.get('/api/TEST2014', function(req, res) {

    // Use mongoose to get all weekdays for display
    TEST2014.find(function(err, days) {

        // if there is an error retrieving, send the error then nothing else
        if (err)
            res.send(err);

        res.json(days);
    });
});
> db.TEST2014.find().pretty()
{
        "_id" : ObjectId("541c377d51b7f5ebbffb7ab1"),
        "date" : "09192014",
        "newProofs" : 15,
        "changes" : 16,
        "output" : 17
}
{
        "_id" : ObjectId("541c4a4451b7f5ebbffb7ab2"),
        "date" : "09182014",
        "newProofs" : 7,
        "changes" : 8,
        "output" : 9
}
{
        "_id" : ObjectId("541c4a5651b7f5ebbffb7ab3"),
        "date" : "09172014",
        "newProofs" : 8,
        "changes" : 9,
        "output" : 10
}
{
        "_id" : ObjectId("541c4a7151b7f5ebbffb7ab4"),
        "date" : "09162014",
        "newProofs" : 9,
        "changes" : 10,
        "output" : 11
}
{
        "_id" : ObjectId("541c4a8051b7f5ebbffb7ab5"),
        "date" : "09152014",
        "newProofs" : 10,
        "changes" : 11,
        "output" : 12
}
听着

var server = app.listen(3000, function() {
    console.log('Listening on port %d', server.address().port);
});
当我在刷新页面时http://localhost:3000/api/TEST2014 我看到:

{}
我希望在数据库中看到这一点

app.get('/api/TEST2014', function(req, res) {

    // Use mongoose to get all weekdays for display
    TEST2014.find(function(err, days) {

        // if there is an error retrieving, send the error then nothing else
        if (err)
            res.send(err);

        res.json(days);
    });
});
> db.TEST2014.find().pretty()
{
        "_id" : ObjectId("541c377d51b7f5ebbffb7ab1"),
        "date" : "09192014",
        "newProofs" : 15,
        "changes" : 16,
        "output" : 17
}
{
        "_id" : ObjectId("541c4a4451b7f5ebbffb7ab2"),
        "date" : "09182014",
        "newProofs" : 7,
        "changes" : 8,
        "output" : 9
}
{
        "_id" : ObjectId("541c4a5651b7f5ebbffb7ab3"),
        "date" : "09172014",
        "newProofs" : 8,
        "changes" : 9,
        "output" : 10
}
{
        "_id" : ObjectId("541c4a7151b7f5ebbffb7ab4"),
        "date" : "09162014",
        "newProofs" : 9,
        "changes" : 10,
        "output" : 11
}
{
        "_id" : ObjectId("541c4a8051b7f5ebbffb7ab5"),
        "date" : "09152014",
        "newProofs" : 10,
        "changes" : 11,
        "output" : 12
}
谢谢你的阅读

PS-我的请求头表示它接受:text/html、application/xhtml+xml、application/xml;q=0.9,图像/webp,*/*;q=0.8


JSON需要在其中的某个地方吗?

问题在下面一行:

var TEST2014 = mongoose.model('TEST2014', schema);
默认情况下,当您仅向上述函数传递2个参数时,mongoose假定集合名称为“TEST2014s”,即第一个参数加上一个s

我在下面的查询中看到,您的收藏名称为“TEST2014”。我建议您显式传递集合名称,并尝试以下操作:

var TEST2014 = mongoose.model('TEST2014', schema, 'TEST2014');

我可以通过将mongoose连接更改为以下方式来解决此问题:

mongodb://<local ip>:27017/<database name> 

结束此问题。

恐怕我仍然收到相同的结果。我不完全明白你的意思。为什么要加一个s?我试图查找文档,但找不到任何列出可接受参数的内容。这只是Mongoose使用的约定。这里是文档的摘录:当没有传递任何集合参数时,Mongoose通过将模型名传递给[utils.toCollectionName]utils_exports.toCollectionName方法来生成集合名。此方法使名称复数。如果不喜欢此行为,请传递集合名称或设置schemas集合名称选项。