我是后端开发的新手,正在尝试编写一个可以在 FireStore 中读取、写入和编辑数据的云函数。我做了用于写入的云功能(添加新数据)。但是,我无法读取工作。如果您能帮助我阅读和编辑,我将不胜感激。谢谢!
Firestore structure:
UserProfile
|
+--wWXaLpiOKegAMw6Jhsdf -- {"name": "Danny", "dob": "01/01/2000"}
|
|
+--Ksfe7segse8tPs2pe1Qu -- {"name": "David", "dob": "11/29/1994"}
|
|
+--Udfuwoi8se9g7rdw65dh -- {"name": "Sherry", "dob": "07/21/1997"}
.
.
.
//index.js
const functions = require("firebase-functions");
const admin = require('firebase-admin');
admin.initializeApp();
const edit = require('./edit.js');
const read = require('./read.js');
exports.edit = functions.https.onRequest((request, response) => {
return edit.edit(request, response);
});
exports.read = functions.https.onRequest((response) => {
return read.read(response);
});
//read.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.read = functions.https.onRequest(async (response) => {
await admin.firestore().collection('UserProfile').get().then(snapshot => {
snapshot.forEach(doc => {
let arr = {
name: doc.data().name,
dob: doc.data().dob
}
response.json({result: arr });
})
})
})
错误:“TypeError:response.json 不是函数”
//edit.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.edit = functions.https.onRequest(async (request, response) => {
await admin.firestore().collection('UserProfile').get().then(snapshot => {
snapshot.forEach(doc => {
if (request.body.id == doc.id) {
doc.data().name = request.body.name,
doc.data().dob = request.body.dob
}
const result = {
name = request.body.name,
dob = request.body.dob
}
response.json({result: result});
})
})
})
我还没有尝试编辑,所以可能存在像 read 这样的语法问题。我想比较文档 ID 以进行编辑。
您需要传递和使用这两个参数,而不仅仅是response
. JavaScript 有位置参数,而不是命名参数。现在,您的代码正在尝试使用 Request 对象作为 Response 对象,因为您将第一个 Request 对象命名为response
。
此外,您不需要使用函数 SDK 来声明您的读取导出。只需使用正常功能即可。只有顶级索引导出需要使用功能SDK builder。
索引.js
exports.read = functions.https.onRequest((request, response) => {
return read.read(request, response);
});
读取.js
exports.read = async (request, response) => { ... }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句