首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让couchrest和couch_potato识别现有的couchdb文档

让couchrest和couch_potato识别现有的couchdb文档
EN

Stack Overflow用户
提问于 2012-03-12 02:53:09
回答 1查看 698关注 0票数 0

我试图在Cloudant上托管的CouchDB数据库上创建一个基本的Rails CRUD应用程序。

我使用马铃薯作为我的持久层,并让它正确地连接到我的Cloudant数据库。

我遇到的问题是我的第一个模型将不会看到我的CouchDB数据库中的现有文档,除非我添加了一个与我的模型名称相等的ruby_class字段。

我的简单用户模型:

代码语言:javascript
复制
class User
  include CouchPotato::Persistence

   property :id, :type => Fixnum
   property :FullName, :type => String

   view :all, :key => :FullName
end

示例CouchDB文档:

代码语言:javascript
复制
{
  "_id": 123456,
  "_rev": "4-b96f36763934ce7c469abbc6fa05aaf3",
  "ORGID": 400638,
  "MyOrgToken": "19fc342d50f9d8df1ecd5e5404f5e5f7",
  "FullName": "Jane Doe",
  "Phone": "555-555-5555",
  "MemberNumber": 123456,
  "Email": "jane@example.com",
  "LoginPWHash": "14a3ccc0e6a50135ef391608e786f4e8"
}

现在,当我从rails控制台使用我的all视图时,我没有得到任何结果:

代码语言:javascript
复制
1.9.2-p290 :002 > CouchPotato.database.view User.all
=> []

如果我将字段和值"ruby_class: User"添加到上面的CouchDB文档中,那么我将在控制台中获得结果:

代码语言:javascript
复制
1.9.2-p290 :003 > CouchPotato.database.view User.all
=> [#<User _id: "123456", _rev: "4-b96f36763934ce7c469abbc6fa05aaf3", created_at: nil,       
   updated_at: nil, id: "123456", FullName: "Jane Doe">]

我正在处理大量的客户数据,我不想编写任何脚本来将ruby_class字段添加到每个文档中(而且可能不允许我这样做)。

如何才能让我的应用程序不添加CouchDB字段就能识别这些现有的ruby_class文档?

我找不到很多关于couch_potato和couchrest的文档,这些文档显示了如何使用现有的CouchDB数据库。大多数示例假设您从零开始启动项目和数据库。

谢谢,

/floatnspace

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-12 09:54:30

当您查看您的all视图时,您将看到类似于ruby_class == 'User'的内容,因此,除非您将此属性添加到您的文档中,否则您将需要处理couch_potato提供的内容。您可以直接使用couch_rest检索您的文档,但我不认为这是您想要的。

如果开始持久化或更新自己的文档,couch_potato将添加ruby_class字段。所以我认为简单的解决办法就是把它们加进去。

您可以做的另一件事是创建一个视图,当文档没有属性集时也会发出该视图。只有当您的couchdb中只有一种文档时,此方法才能工作:

代码语言:javascript
复制
if(!doc.ruby_class || doc.ruby_class == 'User') {
  emit(doc);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9661203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档