【发布时间】:2017-11-02 14:47:41
【问题描述】:
我正在制作一个应用程序,该应用程序会将 POST 请求数据发送到 nodeJS 服务器。内容的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"}
但是当我向 url localhost:3000/api/encdata 发出 GET 请求时,它会显示 [](尽管我有数据,但它是一个空数组)。即使是 POST 请求也不起作用,我也无法保存任何数据。
【问题讨论】:
-
你没有关闭这些大括号:
app.get('/', function(req, res) { -
我正在关闭它,我没有收到任何这样的拼写错误。
-
但是你在声明其他端点后关闭它...
-
我也试过了,问题是一样的。但是我所做的也会奏效。
-
您是否尝试过将
limit传递给ENCDATA.getENCDATA()方法?
标签: javascript node.js mongodb post get