3

JSON データをマングース ドキュメントで返してから、Angular を使用して表示しようとしています。このコードを使用すると、ページにエラーはありません。Angular IndexCtrl の $http.get メソッドは決して成功しないため、問題は API の get メソッドの実装方法にあると思います。そのメソッドを適切に返すように書き換える助けがあれば、大歓迎です!

明確にするために: 私が望むのは、JSON オブジェクトのようにドキュメントにアクセスできるようにして、データをクライアントに表示できるようにすることです。

更新:エラーが発生します:

GET http://localhost:3000/api/tracks

そのエラーがコンソールに表示されるまでしばらく時間がかかります

API メソッド

app.get("/api/tracks", function(req, res) {
return Track.find({}, function (err, tracks) {
  if (err) {
    res.send(500);
    return;
  }
   return res.json({
  tracks: tracks
    });
  });
});

マングースデータベース

var mongoose = require('mongoose');

var uristring = 
  process.env.MONGOLAB_URI || 
  'mongodb://localhost/HelloMongoose';

var mongoOptions = { db: { safe: true }};

var db = mongoose.createConnection(uristring, mongoOptions, function (err, res) {
      if (err) { 
        console.log ('ERROR connecting to: ' + uristring + '. ' + err);
      } else {
        console.log ('Succeeded connected to: ' + uristring);
      }
  });

//a Schema for a track
var Schema = new mongoose.Schema({
  name: String,
  location: String,
  description: String
});

var Track = mongoose.model('Track', Schema);

var spot = new Track({name: 'zildjian'});
spot.save(function (err) {
  console.log('saved');
  if (err) // ...
  console.log('meow');
});

角度コントローラー

function IndexCtrl($scope, $http) {
  $http.get('/api/tracks').
    success(function(data, status, headers, config) {
      $scope.tracks = data.tracks;
      console.log($scope.tracks + "scope tracks data");  //This does not log! it never makes it this far
    });

}

$scope.tracks を表示する Jade テンプレート

p There are {{tracks.length}} posts

div(ng-repeat='track in tracks')
  h3 {{track.name}}
  div {{track.description}}
4

1 に答える 1

3

モデルからエントリを正しく取得していませんでした。これが私がそれを修正した方法です:

app.get("/api/tracks", function (req, res) {
var track = [];

var Track = mongoose.model('Track', trackSchema);
  Track.find({}, function (err, records) {
    records.forEach(function (post, i) {
      track.push({
        id: i,
        title: post.title,
        text: post.text.substr(0, 50) + '...'
      });
    });
    res.json({
      track: track
    });
  });
};
}
于 2012-12-27T08:06:57.063 に答える