当前位置: 首页 > 知识库问答 >
问题:

使用AngularJS和Firebase在用户之间传输项目

伯英武
2023-03-14

好的,所以我正在使用AngularJS和Firebase,并试图在两个用户之间创建一个简单的交换。现在,我的数据结构被设置在“users/uid/”下面,然后是他们的电子邮件、他们加入的日期和gold。

在gold(users/uid/gold)下,我有“send”,它捕获了数量、时间和发送给谁(电子邮件)。这是下面的代码片段。它还更新了他们的总黄金。

现在我被困在更新他们送金子给的人。我捕获电子邮件地址,但范围内的所有内容都与当前登录的用户有关。我将如何更新新用户users/uid/gold/received的金额、时间和电子邮件,以及更新他们的总gold?

ledger.controller('TransferController', function (
$scope, $firebase, $routeParams, $location, $rootScope, FIREBASE_URL) {

    $scope.whichuser = $routeParams.uId;
    $scope.goldsends = goldsendList;

    var ref = new Firebase(FIREBASE_URL + '/users/' + $scope.whichuser + '/gold/' + '/sent/');
    var hopperRef = new Firebase(FIREBASE_URL + '/users/' + $scope.whichuser + '/gold/');
    var usersRef = ref.child("users");
    var goldsendList = $firebase(ref).$asArray();


    $scope.sendGold = function () {
        var sendgoldObj = $firebase(ref); //this var has to match the sendgoldObj.$push var down below, and that's it

        var myData = {
            amount: $scope.user.amount,
            email: $scope.user.email,
            date: Firebase.ServerValue.TIMESTAMP
        };

        sendgoldObj.$push(myData).then(function () {
            //   $location.path('/myledger/');  //page redirect
        }); //data sent to firebase.

        if ($scope.currentUser.gold.total - Math.abs($scope.user.amount) > 0) { //

            var hopperRefff = hopperRef.child("gold");
            hopperRef.update({
                "total": $scope.currentUser.gold.total - $scope.user.amount
            }); //update total gold

            var receive = new Firebase(FIREBASE_URL);
            ref.child('users').orderByChild('email').equalTo(emailAddress).once('value', function (snap) {
                console.log(snap.name() + (snap.val() === null ? ' DOES NOT' : ' does') + ' exist');
            }); //trying to find user to send gold to

        } //if user has enough gold statement
        else {
            return {
                scope: {
                    errormessage: 'You don\'t have enough money',
                }
            };
            console.log("not enough money!");
        } //else note enough gold statement

    } //sendgold
}); //TransferController

共有1个答案

易焱
2023-03-14

您可以通过电子邮件存储用户,其中@替换为_.替换为-

所以在Firebase中有一个类似于这样的JSON结构

users: {
   "bob_hoskins-com": { 
      email: "bob@hoskins.com",
      date: "09-09-1999",
      gold: {
          ...
      }
   }
}

然而,我不认为这是一个很好的方法来解决这个问题。

{
  "rules": {
    "$userId": {
      "requests": {
        ".read": "auth != null && $userId == auth.id",          
        ".write": "auth != null && $userId == auth.id"          
      },
      "responses": {
        ".read": "auth != null && $userId == auth.id",
        ".write": "auth != null && $userId == auth.id"          
      }
   }
}
var Firebase = require('firebase');

function s4() {
  return Math.floor((1 + Math.random()) * 0x10000)
             .toString(16)
             .substring(1);
}

function guid() {
  return s4() + s4() + s4() + s4();
}

var _ref = new Firebase('https://YOUR_FIREBASE.firebaseio.com/');

//Log me in
var guid = guid();
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("YOUR_TOKEN");
var TOKEN = tokenGenerator.createToken({uid: guid, user: "node server"},{admin: true});

_ref.authWithCustomToken(TOKEN, function (error) {
  if(error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Login Succeeded!", guid);
  }
});

_ref.on('child_added', function (user) {
    var requests = user.ref().child('requests');
    requests.on('child_added', function(req) {
        handleRequest(req);
    });
});

var handleRequest = function (request) {
   // Process the request
   // Write stuff back to Firebase

   // Delete the request
   request.ref().remove();
};
 类似资料:
  • 假设我已经有入口点(api网关)来处理身份验证和发布JWT令牌。然后用户用这个令牌调用某个APIendpoint。到目前为止,一切都很清楚。现在--这个endpoint需要与另一个微服务通信。该微服务必须获得授权信息(角色等)。另外-这个通道是异步的(JMS/Kafka),这意味着处理可能会被dalayed... 我也在考虑其他情况:我们有两个服务A和B,它们都公开可能被外部用户访问的API(JW

  • 我需要登录到unix服务器,执行switch user,执行一些命令,然后将这些命令创建的文件scp到另一台服务器。我能够连接到服务器,执行sudo登录和执行命令,但我无法将文件直接scp到另一个远程服务器。 我用的是Jsch jar。下面是我的代码。 public void executeChannel(会话会话、字符串命令、字符串pwd、列表文件)引发异常{ command=sudo su-p

  • 问题内容: 我是AngularJS入门者。我正在尝试从发送数据: A页:范列表页 至 网页B:Van更新页面。 当用户单击货车的更新链接时,我正在调用控制器并在控制器中检索货车详细信息。但是,我无法使用同一控制器将货车详细信息分配给页面B(货车更新页面)…错误 问题答案: 您需要创建一个服务,以便能够在控制器之间共享数据。 在控制器A中: 在控制器B中: 请记住通过将myService作为参数传递

  • 我是 SoapUi 的新手,需要以下情况的一些帮助: 我有两个项目,每个项目都有不同的WSDL文件 项目1: 管理 - 项目2: 检索 - 如何将属性(UserID、AuthToken)从登录测试用例中的肥皂响应从项目1传输到项目2中“搜索”测试用例中的肥皂请求? 我尝试添加测试步骤属性转移,但只返回项目1下的测试用例列表(例如注销),而不是项目2下的测试用例(搜索)?

  • 我需要用UI组件更新模型类的数据,同时用数据对象中的更改更新UI组件。详细说明了大量数据依赖于其他数据。E.A.:A和B的总和。这个总和需要在UI上显示并存储在模型类中。 在实际情况下,我有大约58个可编辑的字段,混合了文本和数字。和一半的计算字段。 第一个步骤是将DocumentListeners添加到所有可编辑的UI字段中。当发生更改时,它们更新模型中的数据,并调用一个方法来更新UI中的所有字

  • 问题内容: 这个问题已经在这里有了答案 : 通过套接字进行Java多文件传输 (2个答案) 4年前关闭。 我已经实现了简单的TCP服务器和TCP客户端类,可以将消息从客户端发送到服务器,并且消息将在服务器端转换为大写,但是如何实现从服务器到客户端的文件传输以及从客户端上载文件到服务器。以下代码是我得到的。 TCPClient.java } TCPServer.java } 因此,首先将执行TCPS