gpt4 book ai didi

javascript - 如何干燥我的 CouchDB View ?

转载 作者:行者123 更新时间:2023-12-02 23:37:43 28 4
gpt4 key购买 nike

如何在 CouchDB 中的 View 之间共享代码?

示例 1——实用方法

杰西哈利特 has some good utility methods ,包括

function dot(attr) {
return function(obj) {
return obj[attr];
}
}

Array.prototype.map = function(func) {
var i, r = [],
for (i = 0; i < this.length; i += 1) {
r[i] = func(this[i]);
}
return r;
};

...

我可以在哪里放置此代码以便每个 View 都可以访问它?

示例 2 -- 常量

对于我在应用程序中使用的常量也是如此。我该放在哪里

MyApp = {
A_CONSTANT = "...";
ANOTHER_CONSTANT = "...";
};

示例 3 -- 过滤器的过滤器:

如果我想要一个按“这是一个富人吗?”进行过滤的单一 View 该怎么办:

function(doc) {
if (doc.type == 'person' && doc.net_worth > 1000000) {
emit(doc.id, doc);
}
}

另一个按姓氏索引:

function(doc) {
if (doc.last_name) {
emit(doc.last_name, doc);
}
}

如何将它们组合成“按姓氏排列的富人” View ?

我有点想要 Ruby 的等价物

my_array.select { |x| x.person? }.select { |x| x.net_worth > 1,000,000 }.map { |x| [x.last_name, x] }

我怎样才能变得干燥?

最佳答案

根据this blog post ,您可以通过在 View 对象中添加一个名为 lib 的键,将 commonjs 模块添加到 couchdb 1.1 View 中的 ma​​p 函数(但不是reduce 函数)。许多流行的 JavaScript 库(例如 underscore.js)都遵循 commonjs 标准,因此您可以通过使用 require("views/lib/[your module name]") 在 View 中使用它们。。 p>

假设您将 underscore.js 作为“下划线”包含在 View 的 lib 对象中,如下所示:

views: {
lib: {
underscore: "// Underscore.js 1.1.6\n ...
}
...
[ the rest of your views go here]
}

,然后您可以将以下内容添加到您的 View 中以访问 _ 模块:

var _ = require("views/lib/underscore");

对于自定义库,您所需要做的就是将您想要在库中共享的任何内容设置为全局“导出”对象的值。

关于javascript - 如何干燥我的 CouchDB View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com