New to Typescript. Wrote this function but I can't figure out why it's giving the error below. I commented the 2 lines that the errors are pointing to.
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
exports.createUser = functions.https.onCall(async (data, context) => {
console.log('_createUser: ');
const uid = context?.auth?.uid;
if (uid) {
const username = data.user;
const email = data.email;
//Check to see if that username already exists
const qData = await admin.firestore().collection('users').where('username', '==', username).limit(1).get();
qData.forEach(doc => {
const otherUsername = doc.get('username').toString();
if (otherUsername) {
console.log('_createUser: Username is already in use.');
return 'Username is already in use.'
}
else {
//Create collection for this user's friends list
const friendsColl = 'friends_' + uid;
const friendsDoc = admin.firestore().collection(friendsColl).doc();
friendsDoc.set({ //Error #1 is here
//Forces the collection to exist
exists: 1,
//Other useful data
createDate: admin.firestore.FieldValue.serverTimestamp(),
modifiedDate: admin.firestore.FieldValue.serverTimestamp(),
ownerUsername: username,
ownerUID: uid, //
rowType: 'B', //N = normal, B = backend (created for server side reasons)
})
const userDoc = admin.firestore().collection('users').doc(uid); // use uid as document ID
userDoc.set({ //Error #2 is here
createDate: admin.firestore.FieldValue.serverTimestamp(),
modifiedDate: admin.firestore.FieldValue.serverTimestamp(),
username: username,
email: email,
stat: 1, //0 = banned, 1 = normal
uid: uid,
friendsColl: friendsColl,
})
return console.log('_createUser_finished');
};
});
}
else {
return console.log('_createUser_Error: User is not authorized');
};
});
48:9 error Promises must be handled appropriately or explicitly marked as ignored with the
void
operator @typescript-eslint/no-floating-promises
61:9 error Promises must be handled appropriately or explicitly marked as ignored with the
void
operator @typescript-eslint/no-floating-promises
You need to use then with set method to return promise. Like this
friendsDoc.set({ //Error #1 is here
//Forces the collection to exist
exists: 1,
//Other useful data
createDate: admin.firestore.FieldValue.serverTimestamp(),
modifiedDate: admin.firestore.FieldValue.serverTimestamp(),
ownerUsername: username,
ownerUID: uid, //
rowType: 'B', //N = normal, B = backend (created for server side reasons)
}).then(result => {});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.