MEAN Stack - Ango上的Mongo数据给出了不必要的结果

时间:2014-02-26 20:26:07

标签: node.js angularjs mongodb express mean-stack

因此,我一直致力于一个侧面项目,以便更熟悉MEAN环境,而且我已经走到了一堵砖墙,现在已经阻挡了我几天。

我的问题是: 当我拉出MongoDB的计数时,它会在页面上显示没有问题。 但是,当我想在2列表中显示数据库中的数据时,我不能。 Mongo将我的数据库作为一个巨大的JSON文档返回。我希望能够为mongo集合name中的每个文档创建一个包含totalheroes的表。

任何人都可以帮助我吗?我已经在网上搜索了几天,并希望至少通过这个测试。

以下是我的文件:

- 来自SERVER.JS的SNIPP -

//Connect to MongoDB
mongoose.connect('mongodb://localhost/dota2');
var db =  mongoose.connection;
//mongoose.connect('mongodb://****:*****@ds033469.mongolab.com:33469/dota2');
db.on('error', console.error.bind(console, 'connection error...'));
db.once('open', function callback(){
    console.log("Connection to Mongo database opened");
});

var Schema = mongoose.Schema;
    var heroSchema = new Schema({
        name: String,
        initiator: Number,
        disabler: Number,
        pusher: Number,
        jungler: Number,
        nuker: Number,
        slug: String,
        lanesupport: Number,
        escape: Number,
        carry: Number,
        total: Number,
        support: Number,
        melee: Number
    }, 
    {collection: 'heroes'});

//Pulling out a piece of data and putting it into an object for Angular
var heroModel = mongoose.model('name:', heroSchema, 'heroes');


var heroData;
heroModel.find('name',{'name':'', _id:0}, function(err, herodatagrab) {
    if(err);
    heroData = herodatagrab;
});

//Show that Dota2/heroes has documents within.
var heronumber;
heroModel.count({ }, function (err, heroNumObj) {
  if (err);
  heronumber = heroNumObj;
});


//Catch-Partials
app.get('/partials/:partialPath', function(req, res) {
    res.render('partials/' + req.params.partialPath);
});


//Catch-All route
app.get('*', function(req, res){
    res.render('index', {
        heroData: heroData,
        heronumber: heronumber
    });
});

- INDEX.JADE -

extends ../includes/layout
title = {title}
block main-content
    section.content
        div(ng-view)
    h3=heronumber 
        |  heroes in the database

block hero
    section.content
        div(ng-view)
    h3=heroData

- 因为它出现在页面上 -

数据库中的102位英雄

  

{name:'Abaddon'},{name:'Alchemist'},{name:'Ancient   幻影'},{name:'Anti-mage'},{name:'Ax'},{name:'Bane'},{   名称:'Batrider'},{name:'Beastmaster'},{name:'Bloodseeker'},{   名称:'Bounty Hunter'},{name:'Brewmaster'},{name:'Bristleback'   },{name:'Broodmother'},{name:'Centaur Warrunner'},{name:'Chaos   Knight'},{name:'Chen'},{name:'Clinkz'},{name:'Clockwerk'},{   名称:'Crystal Maiden'},{name:'Dark Seer'},{name:'Dazzle'},{   名字:'死亡先知'},{姓名:'Disruptor'},{姓名:'Doom'},{姓名:   'Dragon Knight'},{name:'Drow Ranger'},{name:'Earthshaker'},{   名称:'Elder Titan'},{name:'Enchantress'},{name:'Enigma'},{   名称:'Faceless Void'},{name:'Gyrocopter'},{name:'Huskar'},{   名称:'Invoker'},{name:'IO'},{name:'Jakiro'},{name:   'Juggernaut'},{name:'光之守护者'},{name:'Kunkka'},{   名称:'Leshrac'},{name:'Lich'},{name:'Lifestealer'},{name:   'Lina'},{name:'Lion'},{name:'Lone Druid'},{name:'Luna'},{   名称:'Lycanthrope'},{name:'Magnus'},{name:'Medusa'},{name:   'Meepo'},{name:'Mirana'},{name:'Morphling'},{name:'Naga   Siren'},{name:'Nature \'s Prophet'},{name:'Necrolyte'},{name:   'Night Stalker',{name:'Nyx Assassin'},{name:'Ogre Magi'},{   名字:'全能骑士'},{名字:'Outworld Devourer'},{名字:'幽灵   Assassin'},{name:'Phantom Lancer'},{name:'Puck'},{name:   'Pudge'},{name:'Pugna'},{name:'Queen of Pain'},{name:'Razor'   },{name:'Riki'},{name:'Rubick'},{name:'Sand King'},{name:   'Shadow Demon'},{name:'Shadow Fiend'},{name:'Shadow Shaman'},{   名称:'Silencer'},{name:'Skeleton King'},{name:'Skywrath Mage'   },{name:'Slardar'},{name:'Slark'},{name:'Sniper'},{name:   'Spectre'},{name:'Spi​​rit Breaker'},{name:'Storm Spirit'},{   名称:'Sven'},{name:'Templar Assassin'},{name:'Tidehunter'},{   名称:'Timbersaw'},{name:'Tinker'},{name:'Tiny'},{name:   'Treant Protector'},{name:'Troll Warlord'},{name:'Tusk'},{   name:'Undying'},{name:'Ursa'},{name:'Vengeful Spirit'},{name:   'Venomancer'},{name:'Viper'},{name:'Visage'},{name:'Warlock'   },{name:'Weaver'},{name:'Windrunner'},{name:'Witch Doctor'},{   名称:'宙斯'}

感谢您提供任何帮助。这真令人沮丧!

2 个答案:

答案 0 :(得分:0)

您只是呈现heroData对象的文本表示。

至少,您需要将heroData放在脚本标记中,并使用angular的表达式进行打印。这样的事情:

script.
    var heroes = heroData;
    // put heroes into $scope 

div {{heroes}}

答案 1 :(得分:0)

如果要使用Angular,可以使用$http$resource作为数据源,并为数据输出设置api端点。

如果要在jade文件中显示结果,可以使用each ... in ...显示数据:

table
  tr
    th Name
    th Total
  each hero in heros
    tr
      td= hero.name
      td= hero.total