小编Kle*_*ano的帖子

如何在 Firestore Web 版本 9(模块化)中获取集合内的子集合?

我正在使用 Firestore Web 8 的链接模式,但我无法将其更新到模块 9,并且很难弄清楚如何获取我的子集合(我的集合中的集合)的所有内容。
我的旧功能是这样的并且工作正常:

function getInfo(doc_name) {
    let infoDB = db
      .collection("collection_name")
      .doc(doc_name)
      .collection("subcollection_name")
      .get();

    return alunoHistorico;
  }
Run Code Online (Sandbox Code Playgroud)

所以用模块方式我尝试了这段代码

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

const docRef = doc(db, "collection_name", "doc_name");
const docSnap = await getDoc(docRef);

if (docSnap.exists()) {
  console.log("Document data:", docSnap.data());
} else {
  // doc.data() will be undefined in this case
  console.log("No such document!");
}
Run Code Online (Sandbox Code Playgroud)

但是函数 doc() 需要一个偶数参数(不包括 db 参数),所以如果我尝试使用像这样的 3 个参数,我会收到一个错误:

const docRef = doc(db, "collection_name", "doc_name", "subcollection_name");
Run Code Online (Sandbox Code Playgroud)

为了让它工作,我必须传递子集合中的确切文档 …

javascript firebase google-cloud-firestore

14
推荐指数
2
解决办法
1万
查看次数

这些关于 Functor(映射)和 Monad(Either、Maybe、Bind、Then)的概念是对的吗?

我对函数式编程的研究还比较陌生,一切进展顺利,直到我不得不处理错误和承诺。尝试以 \xe2\x80\x9cright\xe2\x80\x9d 的方式做到这一点,我得到了很多 Monad 的参考资料,认为这是更好的解决方案,但在研究它时,我最终得到了我诚实地称之为“引用地狱”,其中存在大量数学或编程中的引用和子引用,对于同一事物,该事物对于相同的概念有不同的名称,这确实令人困惑。因此,在坚持这个主题之后,我现在尝试总结和澄清它,这就是我到目前为止得到的:

\n

为了便于理解,我将其过度简化。

\n
\n

Monoids:是将两个事物连接/求和并返回同一组的东西,因此在 JS 中,任何数学加法或字符串的连接都是 Monoids 的定义以及函数的组合。

\n
\n
\n

映射:映射只是将函数应用于组中每个元素的方法,而不更改组本身的类别或其长度。

\n
\n
\n

函子:函子只是具有返回函子本身的 Map 方法的对象。

\n
\n
\n

Monad: Monad 是使用 FlatMap 的 Functor。

\n
\n
\n

FlatMaps: FlatMaps 是具有处理承诺/获取或总结接收到的值的能力的映射。

\n
\n
\n

要么,也许,绑定,然后:都是 FlatMap,但根据您使用它的上下文具有不同的名称。

\n

(我认为它们都是 FlatMaps 的定义,但它们的使用方式有所不同,因为有像Monets.js这样的库,它同时具有 Maybe 和 Either 函数,但我不\xe2\x80\x99t 得到用例差异)。

\n
\n

所以我的问题是:这些概念正确吗?

\n

如果有人能让我放心,到目前为止我做对的事情,纠正我做错的事情,甚至扩展我错过的事情,我将非常感激。

\n

感谢任何花时间的人。

\n

//================================================== =============//

\n

编辑: \n我应该在这篇文章中更多地强调,但这些肯定和简化的定义仅来自“JavaScript 的实用角度”(我知道不可能对一个巨大而复杂的模型进行如此小的简化)像这样的主题,特别是如果您添加另一个领域(例如数学)。

\n

//================================================== =============// …

javascript monads functional-programming

10
推荐指数
2
解决办法
1010
查看次数

是否可以使用 document.querySelectorAll() 仅获取特定元素内的元素?

所以我有一个如下所示的函数:

function myFunc(targetElements, otherThings... ){
let elements = document.querySelectorAll(targetElements);
//...
//otherThings...
}
Run Code Online (Sandbox Code Playgroud)

但有时,我不需要在整个文档的元素中执行该函数,而是需要此函数仅访问函数外部已有的特定元素内的元素,如下所示:

let ul = document.querySelector('#mySpecificUl');
//should use myFunc(childsOfUl, otherThings... ) to perform in the elements "a" inside "ul"
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以做到这一点而无需更改我已有的功能,可能如下所示:

let ul = document.querySelector('#mySpecificUl');
myFunc(ul > "a", otherThings...); //like this or something
Run Code Online (Sandbox Code Playgroud)

更清楚地说,我想知道的是是否可以限制 document.querySelectorAll ()的范围,使其仅在元素的特定子元素中执行,其工作原理如下:

ul.querySelectorAll()
Run Code Online (Sandbox Code Playgroud)

但与

document.querySelectorAll()
Run Code Online (Sandbox Code Playgroud)

它可能看起来像document.querySelectorAll(ul > "a"); 或者其他的东西。

感谢任何花时间的人。

javascript selectors-api

0
推荐指数
1
解决办法
1490
查看次数