[Firestore聊天室]03-撰写js方法

本篇将介绍个人撰写,稍后会于网页聊天室会用到的javaScript方法

对firestore文件有兴趣的朋友,看这里

Document

检查Collection是否存在本方法传入firestore的SDK建立的collection.get()方法会回传Promise呼叫成功后获得QuerySnapshot物件,其中的empty属性为布林值,true表示该collection为空,反之存在.get()可传入物件参数,本方法传递的{ source: 'server' }表示只取得伺服器的资料,否则他可能会取得cache或本地资料,如此无从判断该collection是否已存在伺服器中在这里定义了callbackfail两个回调函式,用以取得异步呼叫的结果,当Promise成功时调用callback,失败时调用fail
var CollectionExisted = (collection, callback, fail) => {    try {        collection.get({ source: 'server' })            .then(                result => {                    callback(!result.empty);                },                err => {                    fail(err);                }            );    } catch (e) {        console.log(`CollectionExisted Error: ${e}`);    }}
取得collection下所有document传递firestore的SDK建立的collection定义callbackfail回调函式定义预设为空字串的参数orderByField,用以指定查询资料的排序的栏位(field)名称调用collection.get()方法取得资料,若orderByField不为空,加上.orderBy(orderByField)排序查询的资料
var GetRecords = (collection, callback, fail, orderByField = '') => {    try {        var query = null;        if (orderByField) {            query = collection.orderBy(orderByField).get({ source: 'server' });        } else {            query = collection.get({ source: 'server' });        }        query.then(            result => {                callback(result);            },            err => {                fail(err);            }        );    } catch (e) {        console.log(`GetRecords Error: ${e}`);    }}
写入资料传递firestore的SDK建立的collection定义callbackfail回调函式data为要写入document的资料呼叫collection.add()方法将资料写入collection中,伺服器会为该document建立维一值的ID,写入的资料便在该document下本Promise成功时回传DocumentReference,该物件下有许多属性可供使用,如.id为该新建立Document的id
var InsertData = (collection, data, callback, fail) => {    try {        collection.add(data)            .then(                result => {                    callback(result);                },                err => {                    fail(err);                }            );    } catch (e) {        console.log(`InsertData Error: ${e}`);    }}
监听collection变化传递firestore的SDK建立的collection定义callbackfail回调函式sortField排序栏位名称,其不为空时调用collection.orderBy(sortField)呼叫collection.onSnapshot(),为QuerySnapshot事件附加监听器,该监听器可透过呼叫onSnapshot回传的方法卸除当collection发生变化(新增/删除/修改)便会调用回传物件的.docChanges(),该方法可取得变化的资料,型别为阵列,这里透过.forEach()逐一取出并调用callback做下一步处理
var ListenToAllChange=(collection,callback,fail,sortField='')=>{    try{        var query=collection;        if(sortField){            query=query.orderBy(sortField);        }        query.onSnapshot(querySnapshot=>{            querySnapshot.docChanges().forEach(ele=>{                callback(ele);            });        },        err=>{            fail(err);        });    }catch(e){        console.log(`ListenToAllChange Error: ${e}`);    }}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章