我是关于nodejs教程的初学者。
从上述教程中,我生成了以下代码:
[Index.js]
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
var cats = require('./cats.js')(app);
var server = app.listen(3000, function(){
console.log('Server running at http://127.0.0.1/3000');
});
[Cat.js]
var _ = require('lodash');
module.exports = function(app){
_cats = [];
/*
Create
*/
app.post('/cat', function(req, res){
console.log('Testing: ' + req.body);
res.json({info: 'Cat created successfully!'});
});
/*
Read
*/
app.get('/cat', function(req, res){
res.send(_cats);
});
.
.
.
.
当我启动节点脚本并按照教程中的描述发布一些json cat数据时,我的Web浏览器会为每个json输入显示空的json括号。
谁能告诉我我错过了什么或者我做错了什么? 为什么我会打印出空的JSON括号而不是我的cat数据?
我是NodeJS的新手,所以如果我没有充分描述问题,我会道歉。
更新:
我使用Postman Chrome扩展程序将json,{'name':'sam','age':'1','type':'alley'}
发送到http://localhost:3000/cat
。
我关注的教程是PluralSight。我不认为没有帐户就可以访问,但他们确实提供了几天的免费帮助你。
答案 0 :(得分:1)
这是因为您发布的代码不会更新_cats
数组。 post 处理程序的代码应为:
app.post('/cat', function(req, res){
console.log('Testing: ' + req.body);
_cats.push(req.body); // This is the missing line
res.json({info: 'Cat created successfully!'});
});
这里我假设正文包含一个对象并且已经被解析了。如果没有,您可以添加所需的操作......
似乎应该解析请求体。 express 框架有一个额外的模块,正文解析器,用于此目的:
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // this will parse json requests
有关详细信息,请参阅GitHub上的bodyParser。
答案 1 :(得分:1)
看看这个工作样本:
var express = require('express');
var app = express();
var cats = [];
var counter = 1;
app.post('/cat', function (req, res) {
cats.push({id: counter, name: 'Jacklyn'});
counter++;
res.json({info:'cat created successfully'});
});
app.get('/cat', function(req, res) {
res.json(cats);
});
app.listen(8888);

您需要发送至少一个POST
请求才能让数组中有一只猫,并且在每次新的POST
请求之后,猫的数量会增加。