对于文档{userID},我想创建一个名为“ notfications”的子集合,并为其设置数据。如何访问文档并设置数据?
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.updateUser = functions.firestore
.document('users/{userID}/reports/{reportID}')
.onUpdate((change, context) => {
// Get an object representing the document
// e.g. {'name': 'Marie', 'age': 66}
const newValue = change.after.data();
// ...or the previous value before this update
const previousValue = change.before.data();
// access a particular field as you would any JS property
const st1 = newValue.status;
const st2 = previousValue.status;
console.log('I am a log entry!' + st1 + " " + st2);
// Add a new document in collection "cities"
var db = admin.firestore();
var data = {
reportid: '4O8UWUPm3yJfOIdTam9S',
problem: 'It works',
status: 'status'
};
// Add a new document in collection "cities" with ID 'LA'
var setDoc = db.ref(`/users/${newValue}/notifications/n1`).set(data);
// perform desired operations ...
});
答案 0 :(得分:3)
以下应该可以解决问题。
请注意,我们使用set()
,因此我们必须设置新notification
文档的ID:在这里我们取值'n1',如您的问题所示。您可以通过调用add()
集合上的notifications
而不是set()
来让Firestore为您自动生成ID。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
exports.updateUser = functions.firestore
.document('users/{userID}/reports/{reportID}')
.onUpdate((change, context) => {
const newValue = change.after.data();
const previousValue = change.before.data();
const userID = context.params.userID;
const st1 = newValue.status;
const st2 = previousValue.status;
console.log('I am a log entry!' + st1 + ' ' + st2);
var data = {
reportid: '4O8UWUPm3yJfOIdTam9S', //Here, get the value of the reportID by doing: reportid: context.params.reportID,
problem: 'It works',
status: 'status' //Here, if necessary, you could use the value of st1, i.e. the new status
};
return db
.collection('users')
.doc(userID)
.collection('notifications')
.doc('n1')
.set(data)
.catch(error => {
console.log('Error writing document: ' + error);
return false;
});
});