我正在使用firebase函数将数据写入数据库。 我正在使用的函数由HTTP调用(仅POST)触发。 我能够将数据保存到数据库,但无法以适当的格式返回数据。 我收到了,以下错误
TypeError:snapshot.val不是函数
export const saveOrder = functions.https.onRequest(((request, response) => {
if (request.method == "POST") {
const data = JSON.stringify(request.body);
let jsonData = data.replace(/\r?\n\t?/g, '');
let object = {order: JSON.parse(jsonData), status: "pending"};
return admin.database()
.ref("orders")
.push(object)
.then(function (snapshot) {
return response.send(200, snapshot.val());
});
} else {
response.contentType("application/json");
response.status(400).send('{"message":"Invalid method"}');
return;
}
}));
答案 0 :(得分:1)
.push()
方法不返回Snapshot
数据,而是返回Reference
。
您可以获取新参考文献的密钥:
.then((reference) => { return response.send(200, reference.key) });
要以正确的格式返回数据,您可以返回传递给Firebase的对象:
return admin.database() ref("orders").push(object)
.then(function(reference) {
return response.send(200, {
key: reference.key,
data: object,
});
});