NodeJs cat服务器空JSON输出问题

时间:2016-06-22 20:54:36

标签: json node.js

我是关于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。我不认为没有帐户就可以访问,但他们确实提供了几天的免费帮助你。

2 个答案:

答案 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请求之后,猫的数量会增加。