2015-10-15 84 views
0

我正在尝试检索包含要在Web应用程序上列出的子文档的文档列表。在REST API中检索包含子文档的文档

我有我的模式设置为这样:

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

var storeSchema = new mongoose.Schema({ 
    name: String, 
    address: String, 
    phone: String, 
    webUrl: String, 
    coords: {type: [Number], index: '2dsphere'} 
}); 

var reviewSchema = new mongoose.Schema({ 
    user: {type: String, required: true}, 
    store: { type: Schema.ObjectId, ref: 'Store' }, 
    review: {type: String}, 
    tags: [String] 
}); 

mongoose.model('Review', reviewSchema); 
mongoose.model('Store', storeSchema); 

和API控制器设置为这样:

var mongoose = require('mongoose'); 
var Game = mongoose.model('Review'); 

var sendJsonResponse = function(res, status, content) { 
res.status(status); 
res.json(content); 
}; 

module.exports.gamesListByDistance = function(req, res) { 
var lng = parseFloat(req.query.lng); 
var lat = parseFloat(req.query.lat); 
var maxDistance = parseFloat(req.query.maxDistance); 

var point = { 
    type: "Point", 
    coordinates: [lng, lat] 
}; 

var geoOptions = { 
    spherical: true, 
    maxDistance: theEarth.getRadsFromDistance(maxDistance), 
    num: 10 
}; 

Review.geoNear(point, geoOptions, function(err, results, stats) { 
    console.log('Geo Results', results); 
    console.log('Geo stats', stats) 
    if (err) { 
     console.log('geoNear error:', err); 
     sendJsonResponse(res, 404, err); 
    } else { 
     results.populate(results, {path:'store', select:'name coords'}, function(err,reviews) { 
      if (err) { 
       sendJsonResponse(res, 400, err); 
      } else { 
       games = buildReviewsList(req, res, results, stats); 
       sendJsonResponse(res, 200, reviews); 
      } 
     }); 

    } 
}); 
}; 

var buildReviewsList = function(req, res, results, stats) { 
    var reviews = []; 
    results.forEach(function(doc) { 
    reviews.push({ 
     distance: theEarth.getDistanceFromRads(doc.dis), 
     store: doc.obj.store.name, 
     status: doc.obj.status, 
     tags: doc.obj.tags, 
     _id: doc.obj._id 
    }); 
}); 
    return reviews; 
}; 

但我越来越:

类型错误:未定义是不是一个函数

什么是填充这些subdocs并返回评论列表的正确方法是使用Web应用程序?

回答

0

为什么你有: var Game?

应该是var评论