【问题标题】:How to fetch json file in MEAN?如何在 MEAN 中获取 json 文件?
【发布时间】:2017-08-25 09:19:30
【问题描述】:

我是 MEAN 的新手。我在数据库中有 json 内容。需要获取内容并希望显示在前面

这是我从终端获取的 json 集合

athira@athira-Inspiron-3558:~$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> use ehsjson
switched to db ehsjson
> db.ehsjson.find()
{ "_id" : ObjectId("58ddfc8758749dac677fe0af"), "glossary" : { "title" : "example glossary", "GlossDiv" : { "title" : "S", "GlossList" : { "GlossEntry" : { "ID" : "SGML", "SortAs" : "SGML", "GlossTerm" : "Standard Generalized Markup Language", "Acronym" : "SGML", "Abbrev" : "ISO 8879:1986", "GlossDef" : { "para" : "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso" : [  "GML",  "XML" ] }, "GlossSee" : "markup" } } } } }
> 

这是我尝试获取数据的代码

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/ehsjson');
var Employee = mongoose.model('Employee', mongoose.Schema({

glossary: {
    title: String,
    GlossDiv: {
        title: String,
        GlossList: {
            GlossEntry: {
                ID: String,
                SortAs: String,
                GlossTerm: String,
                Acronym: String,
                Abbrev: String,
                GlossDef: {
                    para: String,
                    GlossSeeAlso: Array
                },
                GlossSee: String
            }
        }
    }
}


}));
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/client'));

app.get('/api/employee', function(req, res){
    Employee.find(function(err, ehsjson)
    {
        console.log(ehsjson);
        if(err)
        {
            res.send(err);
            console.log("error"+err);
        }
        res.jsonp(ehsjson);
    });
     //res.jsonp(Employee.ehsjson());
});

但它返回的是空对象。

请帮忙找出错误

谢谢

【问题讨论】:

    标签: json express mongoose mean


    【解决方案1】:

    什么都没有,只是添加了集合名称

    var Employee = mongoose.model('Employee', mongoose.Schema({
         glossary: {
            title: String,
            GlossDiv: {
                title: String,
                GlossList: {
                    GlossEntry: {
                        ID: String,
                        SortAs: String,
                        GlossTerm: String,
                        Acronym: String,
                        Abbrev: String,
                        GlossDef: {
                            para: String,
                            GlossSeeAlso: Array,
                        },
                        GlossSee: String
                    }
                }
            }
        }
    
    
        },{collection: 'ehsjson'}));
    

    【讨论】:

      【解决方案2】:

      您正在尝试将 JSON 内容与 Employee 对象进行映射。但是 JSON 内容具有不同的数据,因此不会与 Employee 对象匹配。这就是为什么你得到空值。

      像这样插入内容并尝试一下。它会起作用的。

      db.employee.find() {“_id”:ObjectId(“58deb49ddf74cfbde91cf804”),“name”:“test”,“dept”:“dept”,“area”:“area”,“status”:“status”,“contact”:“contact ", "薪水" : "122" }

      【讨论】:

      • 我已经更新了 Employee 对象。但它仍然显示为空
      • 我已经测试了您的代码并将集合名称创建为“员工”并使其正常工作。无论如何,您可以通过指定集合名称来实现它。
      • var Employee = mongoose.model('Employee', mongoose.Schema({ },{collection: 'ehsjson'}));像这样也是它的工作
      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 2020-03-08
      • 1970-01-01
      相关资源
      最近更新 更多