Javascript NodeJS服务器从MongoDB返回空数据

Javascript NodeJS服务器从MongoDB返回空数据,javascript,node.js,mongodb,post,get,Javascript,Node.js,Mongodb,Post,Get,我正在制作一个应用程序,该应用程序将向nodeJS服务器发送POST请求数据。内容的JSON格式如下:{“encrypteddata”:“someEncryptedValueofText”}。此数据将保存在MongoDB中。 我创建了两个文件,一个是app.js,另一个是/models/encdata.js。两个文件的内容如下所示。 app.js var express = require('express'); var app = express(); var bodyParser = req

我正在制作一个应用程序,该应用程序将向nodeJS服务器发送POST请求数据。内容的
JSON
格式如下:
{“encrypteddata”:“someEncryptedValueofText”}
。此数据将保存在MongoDB中。
我创建了两个文件,一个是
app.js
,另一个是
/models/encdata.js
。两个文件的内容如下所示。
app.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

app.use(bodyParser.json());

ENCDATA = require('./models/encdata');

mongoose.connect('mongodb://localhost/encdata', { useMongoClient: true }); // the url access the database

var db = mongoose.connection;

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

    res.send('Visit /api/encdata');

    app.get('/api/encdata', function(req, res){
    ENCDATA.getENCDATA(function(err, encdata){
            if(err){
                throw err;
            }
            res.json(encdata);
        });
    });

    app.post('/api/encdata', function(req, res){
        var encdata = req.body;
        ENCDATA.addENCDATA(encdata, function(err, encdata){
            if(err){
                throw err;
            }
            res.json(encdata);
        });
    });

 });

 app.listen(3000);
 console.log('Running on port 3000');
var mongoose = require('mongoose');

var encdataencryptSchema = mongoose.Schema({
    encrypteddata: {
        type: String,
        required: true
    }
});

var ENCDATA = module.exports = mongoose.model('encdata', encdataencryptSchema);

module.exports.getENCDATA = function(callback, limit){
    ENCDATA.find(callback).limit(limit);
}

module.exports.addENCDATA = function(encdata, callback){
    ENCDATA.create(encdata, callback);
}
encdata.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

app.use(bodyParser.json());

ENCDATA = require('./models/encdata');

mongoose.connect('mongodb://localhost/encdata', { useMongoClient: true }); // the url access the database

var db = mongoose.connection;

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

    res.send('Visit /api/encdata');

    app.get('/api/encdata', function(req, res){
    ENCDATA.getENCDATA(function(err, encdata){
            if(err){
                throw err;
            }
            res.json(encdata);
        });
    });

    app.post('/api/encdata', function(req, res){
        var encdata = req.body;
        ENCDATA.addENCDATA(encdata, function(err, encdata){
            if(err){
                throw err;
            }
            res.json(encdata);
        });
    });

 });

 app.listen(3000);
 console.log('Running on port 3000');
var mongoose = require('mongoose');

var encdataencryptSchema = mongoose.Schema({
    encrypteddata: {
        type: String,
        required: true
    }
});

var ENCDATA = module.exports = mongoose.model('encdata', encdataencryptSchema);

module.exports.getENCDATA = function(callback, limit){
    ENCDATA.find(callback).limit(limit);
}

module.exports.addENCDATA = function(encdata, callback){
    ENCDATA.create(encdata, callback);
}
MongoDB中的数据为:

{"encrypteddata": "someencryptedvalueofthetext"}

但是,当我向url
localhost:3000/api/encdata
发出GET请求时,它会显示
[]
(虽然我有数据,但是一个空数组)。即使POST请求也不起作用,我也无法保存任何数据。

我通过更改变量名称重写了您的代码,它对我有效。app.js文件如下所示:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var http = require('http');

app.use(bodyParser.json());

AES = require('./models/aes');

mongoose.connect('mongodb://localhost/aes', { useMongoClient: true }); //     the url access the database

var db = mongoose.connection;

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

res.send('Visit /api/aes');

 app.get('/api/aes', function(req, res){
      AES.getAES(function(err, aes){
         if(err){
             throw err;
         }
         res.json(aes);
     });
 });

    app.post('/api/aes', function(req, res){
        var aes = req.body;
         AES.addAES(aes, function(err, aes){
             if(err){
                throw err;
            }
            res.json(aes);
        });
    });

});



app.listen(3000);
console.log('Running on port 3000');

encdata.js中,可以将变量更改为
AES
。将mongodb集合和数据库命名为
aes

您没有关闭这些大括号:
app.get('/',function(req,res){
我正在关闭它,我没有收到任何类似的打字错误。但是你在声明其他端点后关闭它…我也尝试过,问题也是一样的。但是我所做的也会起作用。你是否尝试过将
限制
传递到
ENCDATA.getENCDATA()
method?谢谢!这对我来说很有效。但我无法理解代码中的问题是什么。只需更改变量,这是如何工作的。