如何使用NodeJ在JSON对象中获取响应

时间:2018-10-16 13:34:39

标签: javascript node.js

我正在使用NodeJs和MongoDb作为后端服务。我的收藏集中有几个文档,其字段名为_id和Name。

我想在Json对象中获得如下所示的输出:

[ 
  {   
    Name:"Paul"
  },
  {   
    Name:"Jon"
  }
] 

这是我的代码:

var express = require('express');    
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true})); 

app.post('/offers',(req, res) => {

MongoClient.connect(url, (err, db) => {           
if(err) throw err;
var dbo = db.db('Tiffino_db');

dbo.collection("Offers")
    .find({},{ projection: { _id: 0 } })
    .toArray((err, result) => {
         if (err) {
                 console.log("Error:", +err);
             }
             else { 
                 output =  result.map(r => r.Name);
                 res.json({"Name":output});
                 db.close();
            }
       });
   });
});

这是我的输出:

{
"Name": [
    "Paul",
    "Jon",
    "David",
    "Aina"
  ]
}

请让我知道如何修改代码以获得所需的输出。

谢谢

3 个答案:

答案 0 :(得分:2)

代替:

output = result.map(r => r.Name); res.json({"Name":output});

尝试:

output = result.map( r => ({ "Name": r.Name })); res.json( output );

按照说明,您将所有结果记录映射到一个数组中,然后将该数组分配给属性名称。相反,您希望每次使用属性名称创建一个新对象并返回该数组。

答案 1 :(得分:2)

代替此

Provides: template

使用此代码

res.json({"Name":output})

答案 2 :(得分:0)

我测试了您提供的代码。使用集合结构和查询,如果您删除行output = result.map(r => r.Name);并仅返回result,您将得到以下结构:

[{ "Name": "TestName" }, { "Name": "TestNam2" }]

然后else块中的代码如下:

res.json(result);
db.close();