在nodejs和mongo中接收一个空的[] json

时间:2015-12-22 01:42:40

标签: javascript angularjs json node.js mongodb

首先,我很抱歉我的英语。

我在nodejs和mongo中遇到问题,我用这段代码创建了一个架构:

var mongoose = require('mongoose'),
    Schema   = mongoose.Schema;

var forumSchema = new Schema({
        foro:[{
                universidad:{ type: Schema.ObjectId, ref: "College"},
                topics:[{
                        usercreator:{type:Schema.ObjectId, ref:"User"},
                        titulo:{ type: String },
                        posts:[{
                                mensaje:{ type: String },
                                username:{type:Schema.ObjectId, ref: "User"}
                            }]
                }]
        }]
});

module.exports = mongoose.model('Forum', forumSchema);

我已经创建了一个Json,我已将其导入mongo:

{
  "_id": {"$oid":"567895dd239410651a8e4df8"},
  "foro":[
    {
      "universidad":"566b279b747cfb38bc2830df",
      "topics":[
        {
          "usercreator": "566df8c2c7d87f1a47fda4e7",
          "titulo": "parking cercano",
          "posts": [
            {
              "mensaje": "hay parking cerca de la uni?",
              "username": "566df8c2c7d87f1a47fda4e7"
            },
            {
              "mensaje": "si, tiene uno grande justo al lado",
              "username": "566df8c2c7d87f1a47fda4e5"
            }
          ]
        },
        {
          "usercreator":"566df8c2c7d87f1a47fda4e5",
          "titulo":"horario",
          "posts":[
            {
              "mensaje":"solo hay horario de mañana?",
              "username":"566df8c2c7d87f1a47fda4e5"
            },
            {
              "mensaje":"no, también de tardes",
              "username":"566df8c2c7d87f1a47fda4e7"
            }
          ]
        }
      ]
    }
  ]
}

问题是,当我在POSTMAN中尝试获取它时,我收到一个空的json,如:[]。

控制器的代码是:

var mongoose = require('mongoose');
var Forum  = mongoose.model('Forum');
var College = mongoose.model('College');
var User = mongoose.model('User');

//GET - Return all forum
exports.AllForum = function(req, res) {
    console.log('all forum');
    Forum.find(function(err, forum) {
        User.populate(forum, {path:"User", select:"username"},function(err, forum){});
        College.populate(forum, {path:"College", select:"college"},function(err, forum) {});
        if (err) res.send(500, err.message);
        console.log('GET /forum' + JSON.stringify(forum));
        res.status(200).jsonp(forum);
    });
};

控制台返回Log“all forum”,因此代码正在执行,但我不知道为什么不起作用。

有谁知道吗?谢谢!

PD:我可以在mongo中使用命令行看到完整的json。

2 个答案:

答案 0 :(得分:0)

jsonp当你从邮递员那里请求时,这个人会期待一个回调。

将其替换为res.status(200).json(forum);

答案 1 :(得分:0)

尝试将空查询对象传递给 Forum.find 操作。看起来您尝试在每个返回的论坛文档中填充一些字段,因此请尝试链接 .populate

exports.AllForum = function(req, res) {
    console.log('all forum');
    Forum.find({})
        .populate('foro.universidad', 'field1 field2')
        .populate('foro.topics.usercreator', 'field1 field2')
        .populate(...)
        .exec(function(err, forum) {
            if (err) {return res.status(500).send(err.message);}
            console.log('GET /forum' + JSON.stringify(forum));
            res.status(200).jsonp(forum);
        });
};