首页 > 代码库 > [AngularFire2] Build a Custom Node Backend Using Firebase Queue
[AngularFire2] Build a Custom Node Backend Using Firebase Queue
In this lesson we are going to learn how to build a custom Node process for batch processing of Firebase data using the Firebase queue library.
From UI, we create a request to add ‘queue/tasks‘ node in database which contains the data to be deleted by queue later.
Controller:
requestLessonDeletion() { this.courseService.deleteLEssonById( this.lesson.$key, this.lesson.courseId ) .then(() => alert("lesson delete successfully")) .catch((err) => console.error(err)); }
Service:
this.rootDb = fb.database().ref()
...
deleteLEssonById(lessonId: string, courseId) { return this.rootDb.child(‘queue/tasks‘) .push({ lessonId, courseId }) }
Then we will build a node server to do the deletion:
package.json:
"batch-server": "./node_modules/.bin/ts-node ./batch-server.ts",
Install:
npm install --save-dev ts-promise firebase-queue
import {firebaseConfig} from "./src/environments/firebase.config";import {initializeApp, auth,database} from ‘firebase‘;const Queue = require(‘firebase-queue‘);import Promise from "ts-promise";console.log(‘Running batch server ...‘);initializeApp(firebaseConfig);auth() .signInWithEmailAndPassword(‘o@you.com‘, ‘youdon‘tknow‘) .then(runConsumer) .catch(onError);function one rror(err) { console.error("Could not login", err); process.exit();}function runConsumer() { console.log("Running consumer ..."); const lessonsRef = database().ref("lessons"); const lessonsPerCourseRef = database().ref("lessonsPerCourse"); const queueRef = database().ref(‘queue‘); const queue = new Queue(queueRef, function(data, progress, resolve, reject) { console.log(‘received delete request ...‘,data); const deleteLessonPromise = lessonsRef.child(data.lessonId).remove(); const deleteLessonPerCoursePromise = lessonsPerCourseRef.child(`${data.courseId}/${data.lessonId}`).remove(); Promise.all([deleteLessonPromise, deleteLessonPerCoursePromise]) .then( () => { console.log("lesson deleted"); resolve(); } ) .catch(() => { console.log("lesson deletion in error"); reject(); }); });}
Run ‘npm run batch-server‘, then the data inside "lessons" & "lessonsPreCourse" & "queue/tasks" will all be deleted.
{ "rules": { ".read": "auth != null", ".write": "auth != null", "courses": { ".indexOn": ["url"] }, "lessons": { ".indexOn": ["url"] }, "queue": { "tasks": { ".indexOn": ["_state"] } } }}
Need to add "queue" to the firebase ruels to get rid of error message.
Github
[AngularFire2] Build a Custom Node Backend Using Firebase Queue
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。