2017-11-02 3 views
1

Ich mache eine App, in der die App die POST-Anforderungsdaten an den nodeJS-Server sendet. Das Format JSON des Inhalts sieht folgendermaßen aus: {"encrypteddata": "someencryptedvalueofthetext"}. Diese Daten werden in einer MongoDB gespeichert.
Ich erstellte zwei Datei eins ist app.js und ein anderes ist /models/encdata.js. Der Inhalt beider Dateien ist unten angegeben.
app.jsNodeJS-Server, der leere Daten aus MongoDB zurückgibt

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); 
} 

und Daten in MongoDB ist:

{"encrypteddata": "someencryptedvalueofthetext"} 

Aber wenn ich eine GET-Anfrage an die URL localhost:3000/api/encdata Es zeigt [] (ein leeres Array obwohl Ich habe Daten). Selbst die POST-Anfrage funktioniert nicht und ich kann keine Daten speichern.

+0

Sie schließen diese geschweiften Klammern nicht: 'app.get ('/', function (req, res) {' –

+0

Ich schließe das und ich bekomme keinen Tippfehler wie das. –

+0

Aber Sie schließen es nach Erklären Sie die anderen Endpunkte ... –

Antwort

1

Ich schrieb Ihren Code um, indem ich den Namen der Variablen änderte und es funktionierte für mich. Die app.js Datei sieht in etwa wie folgt aus:

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'); 

In den encdata.js Sie die Variable AES ändern können. Benennen Sie die Mongodb-Sammlung und die Datenbank als aes.

+0

Danke! Das hat für mich funktioniert. Aber ich kann nicht verstehen, was das Problem in meinem Code war. Nur indem Sie die Variable ändern, wie dies funktionieren kann. –

Verwandte Themen