用geddy查询mongodb

时间:2012-10-21 19:16:32

标签: node.js mongodb geddy

在尝试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时,它创建了我的数据库并且它已正确插入Users集合。

关于这里出错的任何想法?

更新:

按要求添加了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正在创建两个集合而不是一个

1 个答案:

答案 0 :(得分:1)

看起来你遇到了这个错误:https://github.com/mde/geddy/issues/240

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

无论如何,从评论来看,听起来你已经覆盖了这个。