Сервер NodeJS, возвращающий пустые данные из MongoDB

1

Я создаю приложение, в котором приложение отправит данные запроса POST на узел nodeServer. Формат содержимого JSON выглядит следующим образом: {"encrypteddata": "someencryptedvalueofthetext"}. Эти данные будут сохранены в 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');

encdata.js

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"}

Но когда я делаю запрос GET на url localhost:3000/api/encdata он показывает [] (пустой массив, хотя у меня есть данные). Даже запрос POST не работает, и я не могу сохранить данные.

  • 0
    Вы не закрываете эти скобки: app.get('/', function(req, res) {
  • 0
    Я закрываю это, и я не получаю никакой ошибки опечатки как это.
Показать ещё 11 комментариев
Теги:
post
get

1 ответ

1
Лучший ответ

Я переписал ваш код, изменив имя переменной, и это сработало для меня. Файл 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. Назовите коллекцию mandodb и базу данных как aes.

  • 0
    Спасибо! Это сработало для меня. Но я не могу понять, в чем была проблема в моем коде. Просто изменив переменную, как это может работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню