Я создаю приложение, в котором приложение отправит данные запроса 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 не работает, и я не могу сохранить данные.
Я переписал ваш код, изменив имя переменной, и это сработало для меня. Файл 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
.
app.get('/', function(req, res) {