今天需要对 Firebase 增加删除功能,代码精简如下:
var admin = require('firebase-admin'); 2 var config = require('./config.json'); 3 4 var defaultAppConfig = { 5 credential: admin.credential.cert(config.firebase.cert), 6 databaseURL: config.firebase.databaseURL 7 }; 8
var defaultAppName = 'GoPeople-NodeJS-Admin';11 var defaultApp = admin.initializeApp(defaultAppConfig, defaultAppName);12 13 var 서명Ref = defaultApp.database().ref('signatures');14 15 서명Ref.orderByChild( "isChecked").equalTo(true).limitToLast(10).once("value")16 .then(function(snapshot) {17 18 snapshot.forEach(function(childSnapshot) {19 var key = childSnapshot.key;20 var childData = childSnapshot.val();21 22 var now = new Date();23 var date = new Date(childData.date);24 var dayDiff =parseInt((현재 - 날짜) / (1000 * 60 * 60 * 24)); // 일 diff25 26 if(dayDiff >30){27 서명Ref.child(key).remove(function(error) {28 console.log(key);29 console.log(dayDiff);30 콘솔 .log(오류 ? ("어오! " + 오류) : "성공!");31 });32 }else{33 console.log(key);34 console.log(dayDiff);35 }36 }) ;37 38 });
Firebase 修改节点:
functionfinishJobSync(jobGuid) { var signedsRef = defaultApp.database().ref('signatures').child(jobGuid);
signaturesRef. update({isChecked: true},function(error) { if (error) {
logger.error(error);
} else {
logger.info('Job' + jobGuid + '서명이 동기화되었습니다.');
}
});
}
Firebase 监听:
var signedsRef = defaultApp.database().ref('signatures');
signaturesRef.orderByChild("isChecked").equalTo(false) .on ("child_ added", function(snapshot, prevChildKey) { // TODO: });
admin.database.DataSnapshot
>> key
// 데이터베이스에 다음 데이터가 있다고 가정합니다.{ "name": { "first": "Ada", "last": "Lovelace"
}
}var ref = admin.database( ).ref("users/ada");
ref.once("value")
.then(function(snapshot) { var key = snapshot.key; // "ada"
var childKey = snapshot.child(" 이름/성").key; // "성"
});
>> child
var rootRef = admin.database().ref();
rootRef.once("value")
.then(function(snapshot) { var key = snapshot.key; // null
var childKey = snapshot .child("users/ada").key; // "ada"
});
>> 존재합니다
// 데이터베이스에 다음 데이터가 있다고 가정합니다.{ "name": { "first": "Ada", "last": "Lovelace"
}
}// DataSnapshotvar 내에 특정 키가 있는지 테스트합니다. ref = admin.database().ref("users/ada");
ref.once("value")
.then(function(snapshot) { var a = snapshot.exists(); // true
var b = snapshot.child("name").exists(); // true
var c = snapshot.child("name/first").exists() // true
var d = snapshot.child("name/ middle").exists(); // false
});
>> foreach
// 데이터베이스에 다음 데이터가 있다고 가정합니다.{ "users": { "ada": { "first": "Ada", "last": "Lovelace"
}, "alan ": { "first": "Alan", "last": "Turing"
}
}
}// forEach() 메서드를 사용하여 순서대로 사용자를 반복합니다. forEach()에 제공된 콜백은// 각 하위 항목에 대해 DataSnapshot//과 동기식으로 호출됩니다. var query = admin.database().ref("users").orderByKey();
query.once("value" )
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) { // 키는 처음에는 "ada"이고 두 번째에는 "alan"입니다
var key = childSnapshot.key; // childData는 자식의 실제 콘텐츠가 됩니다
var childData = childSnapshot.val();
});
});
>> hasChildren
// 데이터베이스에 다음 데이터가 있다고 가정합니다.{ "name": { "first": "Ada", "last": "Lovelace"
}
}var ref = admin.database ().ref("users/ada");
ref.once("value")
.then(function(snapshot) { var a = snapshot.hasChildren(); // true
var b = snapshot.child( "name").hasChildren(); // true
var c = snapshot.child("name/first").hasChildren(); // false
});
> numChildren
// 데이터베이스에 다음 데이터가 있다고 가정합니다.{ "name": { "first": "Ada", "last": "Lovelace"
}
}var ref = admin.database ().ref("users/ada");
ref.once("value")
.then(function(snapshot) { var a = snapshot.numChildren(); // 1 ("name")
var b = snapshot.child("이름").numChildren(); // 2 ("첫 번째", "마지막")
var c = snapshot.child("이름/첫 번째").numChildren() // 0
} );
admin.database.Query
>> orderByChild
var ref = admin.database().ref("공룡");
ref.orderByChild("height").on("child_add", function(snapshot) {
console.log(snapshot.key + "는 " + snapshot.val().height + " m 키");
});
>> orderByKey
var ref = admin.database().ref("공룡");
ref.orderByKey().on("child_add", function(snapshot) {
console.log(snapshot.key);
} );
>> orderByValue
var ScoreRef = admin.database().ref("scores");
scoresRef.orderByValue().limitToLast(3).on("value", function(snapshot) {
snapshot.forEach(function( data) {
console.log("" + data.key + " 점수는 " + data.val());
});
});
>> startAt, endAt
// 키가 3미터 이상인 공룡을 모두 찾습니다.var ref = admin.database().ref("dinosaurs");
ref.orderByChild("height").startAt( 3).on("child_add", function(snapshot) {
console.log(snapshot.key)
});// 이름이 Pterodactyl 사전순으로 앞에 오는 모든 공룡을 찾습니다.var ref = admin.database().ref( "공룡");
ref.orderByKey().endAt("익룡").on("child_ added", function(snapshot) {
console.log(snapshot.key);
});
>> limitToFirst, limitToLast
// 가장 짧은 공룡 두 마리를 찾습니다.var ref = admin.database().ref("dinosaurs");
ref.orderByChild("height").limitToFirst(2).on("child_ added", function(snapshot) { // 이는 정확히 두 번 호출됩니다(데이터베이스에 공룡이 2개 미만이 아닌 한
// 공룡이 있는 경우 제외).
// 처음 두 공룡 중 하나가
// 데이터 세트는 이제 두 번째 공룡이 됩니다
// 가장 짧습니다. console.log(snapshot.key);
});// 가장 무거운 두 공룡을 찾습니다.var ref = admin.database().ref(" 공룡");
ref.orderByChild("weight").limitToLast(2).on("child_add", function(snapshot) { // 이 콜백은 공룡이 2개 미만이 아닌 한 정확히 2번 트리거됩니다. 또한 데이터베이스에 저장된 공룡도 해고됩니다
// 데이터 세트에 추가되는 모든 새롭고 무거운 공룡에 대해. console.log(snapshot.key);
});
ref.orderByChild("height").equalTo(25).on("child_ added ", 함수(스냅샷) {
console.log(snapshot.key);
});
usersRef.isEqual(rootRef); // falseusersRef.isEqual(rootRef.child("사용자")); // trueusersRef.parent.isEqual(rootRef); // true
usersQuery.isEqual( 사용자참조); // falseusersQuery.isEqual(usersRef.limitToLast(10)); // trueusersQuery.isEqual(rootRef.limitToLast(10)); // falseusersQuery.isEqual(usersRef.orderByKey().limitToLast(10)); // 거짓
>> toString
위 내용은 Firebase 관련 작업의 예시 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!