【问题标题】:mongoose query to collection not returning results?猫鼬查询集合不返回结果?
【发布时间】:2017-12-03 15:27:45
【问题描述】:

我有一个这样定义的模型:

game.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Game = new Schema({
  game: String,
  lobby_size: Number });

module.exports = mongoose.model('games', Game, 'game_list');

我正在尝试获取集合“game_list”中的所有条目并将它们打印到console.log 以进行调试

games.js

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Games = require('../models/game.js');

router.get('/list', function(req, res) {
  Games.find({}, function(err, docs) {
    console.log(docs);
  });
});

module.exports = router;

这是我连接数据库的代码:

app.js

// connect mongoose to db
mongoose.connect('mongodb://localhost/angulobby');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
db.on('open', function() {
  console.log('connected to database.');
});

当我在 mongoDB shell 中运行 db.game_list.find({}) 时,我得到:

{ "_id" : ObjectId("595541d1d01f064117614a28"), "game" : "Counter-Strike: Global Offensive", "lobby_size" : 5 }

所以我知道集合已填充,但是当我运行 /list api 调用时,console.log 只打印 []

提前感谢大家的帮助!

【问题讨论】:

  • 在服务器连接到数据库后检查您是否调用了 API
  • 所有事情都是平等的,这应该有效。您确定您现有的收藏实际上在angulobby 数据库中吗?默认情况下,当您通过 mongo shell 连接时,数据库命名空间是 test,因此请确保您实际上并未在此处创建它。您还可以设置mongoose.set('debug',true),它将记录连接和向 mongodb 发出的所有命令。但最可能的解释是您只是查看了错误的数据库命名空间或服务器。
  • @NeilLunn 谢谢,经过多次试验和错误,最终成为了它

标签: node.js mongodb mongoose


【解决方案1】:

找到解决方案。在我的本地 mongoDB 服务器中,我没有将数据库正确设置为 /angulobby 数据库,因此它没有接收到集合中的信息。发出命令use angulobby 修复了它,我现在可以收到正确的查询响应。

【讨论】:

    猜你喜欢
    • 2018-08-22
    • 2014-05-30
    • 2018-03-07
    • 2020-12-16
    • 2015-08-26
    • 2015-08-04
    • 2014-07-25
    • 2020-02-03
    相关资源
    最近更新 更多