【问题标题】:Query mongodb with geddy用geddy查询mongodb
【发布时间】:2012-10-23 05:44:15
【问题描述】:

在尝试 node.js 框架 geddy(在 Windows 上)时,我遇到了一些问题。

我正在尝试在我的控制器中使用用户模型中的 .first() 方法查询 mongodb,如下所示:

geddy.model.User.first({name: 'jdoe'}, function (err, data) {
  if (err) {
    throw err;
  } else {
    console.log(data);
  }

});

奇怪的是,我没有得到任何输出、错误,什么也没有。用户 jdoe 存在于集合中,所以它应该输出一些东西,对吗?我做错了吗?

我的模型定义为:

var User = function () {

    this.defineProperties({
      username: {type: 'string', required: true},
      password: {type: 'string', required: true},
    });

    this.autoIncrementId = true;

};

User = geddy.model.register('User', User);

默认适配器在 development.js 中设置为 mongo,当我第一次运行 geddy 时,它创建了我的数据库并正确插入了用户集合。

你知道这里出了什么问题吗?

更新:

根据要求添加了 development.js

var config = {
  detailedErrors: true
, debug: true
, hostname: null
, port: 4000
, model: {
    defaultAdapter: 'mongo',
    }
,db: {
    mongo: {
        dbname: 'knowledgebase'
    }
}
, sessions: {
    store: 'memory'
  , key: 'sid'
  , expiry: 14 * 24 * 60 * 60
  }
};

module.exports = config;

还有我在 mongo 上的收藏(由 geddy 创建)

> show collections
User
system.indexes
users

请注意,geddy 以某种方式创建了两个集合而不是一个

【问题讨论】:

  • 我可以看看你的配置文件吗?没有它,我将无法说出这里发生了什么:)
  • 另外,你能告诉我你的数据库中的集合列表吗?
  • 使用 config 和 mongo 集合编辑了我的帖子。昨天 .all()/.first() 命令不会成功查询 mongo,今天他们可以。奇怪!是否与正在创建的“重复”集合有关?

标签: node.js mongodb geddy


【解决方案1】:

看起来你被这个错误击中了:https://github.com/mde/geddy/issues/240

事实上,Geddy 不小心为每个模型创建了两个集合。它总是使用小写的复数集合来进行读/写。您确定您的数据在该集合中而不是在另一个集合中吗?

无论如何,从 cmets 看来,您似乎已经掌握了这一点。

【讨论】:

  • 是的,好像是同一个bug,之前应该查过github,谢谢!无论如何,是的,我的数据总是以小写复数集合结束,对于我创建的每个模型,另一个都是空的。希望他们尽快解决这个问题,很高兴知道它已经发布。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2019-06-18
相关资源
最近更新 更多