将文档添加到Firestore中时,如何将其写入另一个具有不同名称的文档中?

时间:2019-11-26 08:56:32

标签: firebase google-cloud-firestore google-cloud-functions

将文档添加到Firestore时,我尝试将其转移为其他名称并删除旧文档。我不知道该怎么做。似乎可以通过某种方式设置触发器来执行Firebase函数中的特定功能吗?

要更改文档的名称,我尝试从另一个文档中提取文档的数量,但似乎我以某种方式弄错了。

exports.changeLocation = functions.region('europe-west1').firestore.document('users/{userId}/notes/{noteId}').onCreate((snap,context) => {
  const uid = context.params.userId;
  const data = snap.data();
    let count;
    let documentRef = db.collection("users").doc(uid).collection("info").doc("info").get().then(doc => {
    if(!doc.exists){
      console.log("No such document");
    }else{
      count = doc.id("countMutable").toString();
    }
  }).catch(err => {
    console.log("Error getting document: ", err);
  });
  const p2 = documentRef.delete();
  return db.collection("users").doc(uid).collection("notes").doc("its_notes:"+count).set(data);
});

2 个答案:

答案 0 :(得分:1)

您的问题还不够清楚。但是基于您的解释的第一行,我假设在创建新文档时,您想将其数据转换为位于不同路径/子集合中的另一个文档,然后仅删除第一个文档。

因此,假设您有一个在此路径上创建文档时就会触发的函数: users / {userId} / notes / {noteId} 然后您要在此路径下添加另一个文档,其中包含此新创建的数据: users / {userId} / info (除非Firestore正在生成文档ID,您想以其他方式进行管理),然后删除第一个文档。

这是您可以执行的方式:

export const changeLocation = functionBuilder.firestore.document('users/{userId}/notes/{noteId}')
  .onCreate(async (snapShot,context) => {
  const uid = context.params.userId;
  const noteId = context.params.noteId;
  const data = snapShot.data();

  const newCollectionRef = db.collection('users').doc(uid).collection('info');
  await newCollectionRef.add(data);

  const alreadyExistedDocument = db.collection('users').doc(uid).collection('notes').doc(noteId);
  await alreadyExistedDocument.delete();
}); 

答案 1 :(得分:0)

如果$(document).ready(function() { var url = location.pathname; var urlSplit = url.split('/'); var urlFull = urlSplit[1] + '/' + urlSplit[2]; $(".submenumoe>li").each(function() { var navHref = $(this).find("a").attr("href"); $(".submenu li a").addClass('submenu-empty'); if (navHref.indexOf(urlFull) > -1) { $(this).find("a").removeClass('submenu-empty'); $(this).find("a").addClass('submenu-on'); } else { // some code } }); }); 确实是count = doc.get("countMutable").toString()记录的一个字段,您是否应该用count = doc.id("countMutable").toString()而不是countMutable