在我的React Native项目中,我使用Firestore作为数据库。每当用户注册时,我都想创建主管批准请求。
基本上,在function getSubArrayCount(a,sum) {
let r=0, sub= (a,n)=> a.filter((x,i)=> n&(1<<i));
for(let i=0; i<2**a.length; i++)
sub(a,i).reduce((s,c)=>s+c,0)==sum ? r++ : 0;
return r;
}
console.log('[1,2,3,2,1,8,-3] sum=5 => ', getSubArrayCount([1,2,3,2,1,8,-3],5) );
console.log('[1,2,3,4] sum=10 => ', getSubArrayCount([1,2,3,4],10) );
console.log('[1,2,3,-3] sum=3 => ', getSubArrayCount([1,2,3,-3],3) );
的集合下,每个supervisorRequests
都应有一个文档,并以主管的密钥命名。在主管文档下,我想要一个随机生成的ID集合,每个ID都保存请求元数据。这是我想要的结构:
supervisor
我试图实现这一目标的代码是:
-supervisorRequests
-supervisor-1-Key
-random-id-of-request
- user: userID
- userEmail: userEmail
- requestDate: timestamp
-random-id-of-request
- user: userID
- userEmail: userEmail
- requestDate: timestamp
-supervisor-2-Key
-random-id-of-request
- user: userID
- userEmail: userEmail
- requestDate: timestamp
-random-id-of-request
- user: userID
- userEmail: userEmail
- requestDate: timestamp
-random-id-of-request
- user: userID
- userEmail: userEmail
- requestDate: timestamp
但是,我的代码生成以下结构:
const docReference = firebase.firestore().collection(`supervisorRequests`).doc(this.props.supervisorKey);
docReference.set({ user: this.props.userUID, requestDate: new Date().getTime(), userEmail: this.props.email });
这不是我想要的,因为每次对主管的密钥提出新请求时,旧请求都会被覆盖。
我的代码有什么问题?如何实现所介绍的第一个数据库结构?
答案 0 :(得分:1)
您传递给collection()的字符串必须是集合的路径。您现在传递的是文档的路径。它通过查看字符串中的正斜杠来辨别。也许您想参考这样的文档:
['apple://folderx/folderz/source_b_20190324-0.json', 'apple://folderx/folderz/source_c_20190324-0.json', 'apple://folderx/folderz/source_b_20190326-0.json']
您可以使用返回的DocumentReference及其set()方法来创建文档。
答案 1 :(得分:0)
仅需完成Doug的答案,请注意,您可以直接将“斜杠分隔的路径”传递给doc()
方法,以获取“ DocumentReference
”实例,该实例引用文档中的指定的路径”。
所以您也可以这样做:
firebase.firestore().doc(`supervisorRequests/${this.props.supervisorKey}`).set();