我们使用这个云函数已经有一段时间了,我们使用如下所示的代码从单个FireStore文档中的一个唯一储物柜编号数组中为我们的用户提供一个单独的编号/代码.
function grabLocker(){
return admin.firestore().runTransaction(async (t) => {
var lockerDoc = await t.get(lockerref);
if(lockerDoc && lockerDoc.data()){
var lockerArr = lockerDoc.data().lockers ? lockerDoc.data().lockers : [];
if (lockerArr.length > 0){
var randomIndex = Math.floor(Math.random()*((lockerArr.length - 1)-0+1)+0);
var newLockers = lockerArr.slice(0,randomIndex).concat(lockerArr.slice(randomIndex + 1));
var userLocker = lockerArr.slice(randomIndex, randomIndex + 1);
t.update(lockerref, {'lockers': newLockers});
return {status: 'succes', locker: userLocker[0]};
}
return {status: 'empty'};
}
return {status: 'empty'};
});
}
在我们最新的活动中,这个脚本给了600个请求储物柜的用户中的8个重复的号码.我们查了又查,但数组只有唯一的数字.