使用变量从 couchbase 存储桶中获取数据

Getting data from couchbase bucket with a variable

我想知道:在我的 map reduce 函数中,我可以将 "parent" 属性 作为变量吗?像这样:

function (doc, meta) {

  var key,value;
    if(doc.type == "mainForums" && doc.parent == **VAR**){
   key = [doc.type,doc.id]
   value = {Id : doc.id, Title : doc.title, Description : doc.description, Parent: doc.parent, HasChild : doc.hasChild, Level : doc.level, ImageUrl : "http://icon.donanimhaber.com/mobile-forum-icons/" + doc.iconPath, AvarageColor: doc.avarageColor,  RepMode : doc.repMode, iconPath : doc.iconPath, MessageCountThisWeek : doc.messageCountThisWeek, TopicCountThisWeek : doc.topicCountThisWeek}

  emit(key, value);
  }
}

由于我是在 couchbase 控制台上创建 map reduce 函数,所以我不知道如何向该函数添加变量。我正在 MVC 上做映射部分,如下所示:

var tempForum = new Forum
                {
                    Id = item.Id,
                    Title = item.Title,
                    Description = item.Description,
                    HasChild = item.HasChild,
                    Level = item.Level,
                    iconPath = item.iconPath,
                    Parent = item.Parent,
                    IsFavorite = item.IsFavorite,
                    TopicCountThisWeek = item.TopicCountThisWeek,
                    MessageCountThisWeek = item.MessageCountThisWeek,
                    RepMode = item.RepMode,
                    ForumExtra = item.ForumExtra
}

在屏幕上正确打印 json。我应该将 mobile(android) 程序员给我的变量作为变量,比方说 4,然后从 sync_gateway 中将 parent=4 文档带给他。或者 android 程序员应该做那个 map reduce 的事情吗?

也许我应该忘记视图,在这种情况下只使用 N1QL?因为我可以用 N1QL 来做,但我也想用视图来做,因为我以后可能需要视图。我不确定什么是最好的,我真的很困惑。

非常感谢。

我认为这不是视图的好用例,它不能参数化,也不能真正构建成 return 完整的文档层次结构。

valueemit 是存储在索引中的内容(并传递给 reduce 函数),所以它 真的 冗余存储全部内容,通常不是一个好主意。 parents 位的可配置数量与支持 AFAIK 的视图相差甚远。

所以我建议坚持使用 N1QL,或者找到一种方法在服务器 (N1QL) 上一半,在客户端上一半?