将文档添加到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);
});
答案 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
?