将 Mongoose 文档中的 JSON 数据返回到客户端 Javascript

Posted

技术标签:

【中文标题】将 Mongoose 文档中的 JSON 数据返回到客户端 Javascript【英文标题】:Return JSON data from a Mongoose document to client Javascript 【发布时间】:2012-12-12 12:10:21 【问题描述】:

我正在尝试在 mongoose 文档中返回 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');
);

Angular 控制器

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

【问题讨论】:

在 $http.get 中添加一个错误子句。我怀疑那里有错误:error(function(data, status, headers, config) console.log(data); ) 【参考方案1】:

我没有正确地从模型中提取条目。这是我修复它的方法:

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
    );
  );
;

【讨论】:

莫非这是获取j的唯一途径

以上是关于将 Mongoose 文档中的 JSON 数据返回到客户端 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

使用node js mongoose保存后如何返回json数据

仅选择 Json 文档中带有 mongoose 的值

Mongoose 不会从 JSON 数组创建子文档

Mongoose/MongoDB:$in 和 .sort()

如何将 Mongoose 文档转换为普通对象?

如何将 Mongoose 文档转换为普通对象?