首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >firebase函数+实时数据库-数据库结构和代码

firebase函数+实时数据库-数据库结构和代码
EN

Stack Overflow用户
提问于 2018-07-25 14:23:05
回答 1查看 127关注 0票数 1

我在一个简单的应用程序上:这是我第一次尝试使用firebase函数+实时数据库。

这些函数将由外部客户端应用程序(例如: android)调用。

如果不是javascript + nosqldb,我就不会有问题了,但是我在这里遇到了问题,因为我不确定最佳的db结构和类似事务的操作。

I. 存储的数据:

  • 用户简介(id,全名,电子邮件,电话,照片)
  • 每位用户门票金额
  • 购票历史
  • 使用门票的历史

二.行动:

  • 用户购买一些票-应该在用户的数量中添加门票,并在购买历史记录中添加记录
  • 用户使用某些票证-应该从用户的数量中删除票证,并将记录添加到使用历史记录

因此,我的基本问题是这个和-如果它是一个SQL,我将使用一个事务,但在这里,我不确定什么是db结构和js代码,以实现同样的结果。

编辑: ======== index.js =======

代码语言:javascript
复制
exports.addTickets = functions.https.onCall((data, context) => {
 // data comes from client app
 const buyingRecord = data;
 console.log(‘buyingRecord: ‘ + JSON.stringify(buyingRecord));

return tickets.updateTicketsAmmount(buyingRecord)
 .then((result)=>{
 tickets.addTicketsBuyingRecord(buyingRecord);
 result.userid = buyingRecord.userid;
 result.ticketsCount = buyingRecord.ticketsCount;
 return result;
 });
});

====== tickets.js =======

代码语言:javascript
复制
exports.updateTicketsAmmount = function(buyingRecord) {
 var userRef = db.ref(‘users/’ + buyingRecord.userid);
 var amountRef = db.ref(‘users/’ + buyingRecord.userid + ‘/ticketsAmount’);
 return amountRef.transaction((current)=>{
 return (current || 0) + buyingRecord.ticketsCount;
 })
 .then(()=>{
 console.log(“amount updated for userid [“ + buyingRecord.userid + “]”);
 return userRef.once(‘value’);
 })
 .then((snapshot)=>{
 var data = snapshot.val();
 console.log(“data for userid [“ + snapshot.key + “]:” + JSON.stringify(data));
 return data;
 });
}

exports.addTicketsBuyingRecord = function(buyingRecord) {
 var historyRef = db.ref(‘ticketsBuyingHistory’);
 var newRecordRef = historyRef.push();
 return newRecordRef.set(buyingRecord)
 .then(()=>{
 console.log(‘history record added.’); 
 return newRecordRef.once(‘value’);
 })
 .then((snapshot)=>{
 var data = snapshot.val();
 console.log(‘data:’ + JSON.stringify(data));
 return data;
 });
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-25 16:02:57

您必须使用回调,在Android上添加或读取数据的请求有一个onSuccess或OnFailure callback,我用它来触发我的新请求。

您可以在doc 这里 :)上检查这个

另外,如果不使用RealTime数据库,而是使用Firestore,那么您可以使用FireStore事务,这里是信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51521328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档