使用mongoose从集合中提取所有文档

时间:2014-11-17 06:17:51

标签: javascript node.js mongoose

编辑:我的错误实际上从未在$http.get上使用/spells来电,因此router.get从未发生过。

在我的app.js中,我有一行......

var mongoose = require('mongoose');
mongoose.connect('...');
require('./models/spells');
var routes = require('./routes/index');

spells.js定义了SpellSchema ...

var mongoose = require('mongoose');

var SpellSchema = new mongoose.Schema({
  name: String,
  level: String,
  school: String,
  ritual: String,
  classes: [String],
  castingTime: String,
  range: String,
  components: [String],
  duration: String,
  description: [String],
  page: String
}, {});

mongoose.model('spell', SpellSchema);

然后在index.js我做...

var mongoose = require('mongoose');
var test = mongoose.model('spell');
router.get('/spells', function(req, res, next) {
  test.find({}, function(err, data) {
    console.log(err, data, data.length);
    if (err) { return next(err); }
    res.json(data);
  });
});

但是console.log没有打印出来。如果在spells.js结束时我有......

var test = mongoose.model('spell', SpellSchema);
test.find({}, function(err, data) {
    console.log(err, data, data.length);
}

...所有拼写文件都会打印到控制台。

为什么会发生这种情况,我有点困惑?据我所知,它应该打印法术。

2 个答案:

答案 0 :(得分:0)

试试这个

data = JSON.stringify(data);
data = JSON.parse(data);
res.json(data);

答案 1 :(得分:0)

你试试这个吗?

var SpellModel = require('./shell');
SpellModel.find({}, console.log);

我认为你不应该调用mongoose.model,因为mongo db连接可能还没有。