angularjs - समस - बैंक के खाते से लिंक आधार कार्ड का नुकसान



AngularFire का उपयोग कर आईडी के आधार पर पथ के बीच डेटा जोड़ना (1)

मैं वर्तमान में फायरबसे और कोणीय जेएस (आयनिक) का प्रयोग कर एक ऐप पर काम कर रहा हूं। असल में यह एक कार प्रबंधन ऐप है, इसलिए आप लोग अपनी कारों को दूसरों के साथ साझा कर रहे हैं। मैंने डेटा को कुशल बनाने के लिए यथासंभव फ्लैट के रूप में ढांच करने की कोशिश की। मेरा मुद्दा यह है कि यदि बिना किसी समस्या के मैं लॉग-इन उपयोगकर्ता के साथ साझा की जाने वाली कारों की कार की सूची प्रदर्शित कर सकता हूं, तो मैं उस वर्ष के मॉडल के साथ साझा कारों की सूची प्रदर्शित करने का कोई तरीका नहीं खोज सकता हूं और मॉडल

आपकी मदद के लिए अग्रिम धन्यवाद !

{
"rules": {
    "users": {
        ".write": true,
        "$uid": {
            ".read": "auth != null && auth.uid == $uid"
        },
        "cars": {
          "car_id":true,
          "role":true // Owner, borower...
        }
    },
    "cars": {
      "car_id":true,
      "model":true,
      "year":true
    }
}

}

carapp.controller("carsController", function($scope, $firebaseObject, $ionicPopup, $ionicHistory) {

$ionicHistory.clearHistory();

$scope.list = function() {
  frbAuth = frb.getAuth();
  if(frbAuth) {
    var userObject = $firebaseObject(frb.child("users/" + frbAuth.uid));
    userObject.$bindTo($scope, "user");
    $scope.cars = frb.child("cars");
}}

$scope.createCar = function() {
  $ionicPopup.prompt({
    model: 'Create a new car',
    inputType: 'text'
  })
  .then(function(result) {
    if(result !== "") {
      var newCar = $scope.cars.push({
        model: result
      })
      var newCarId = newCar.key();
      $scope.user.cars.push({car_id: newCarId, role: "owner" });

    } else {
        console.log("Action not completed");
    }
});

}

});

    <div class="list">
     <a ng-repeat="car in user.cars" >
         <h2>{{car.car_id}}</h2> ----> works fine !
<h2>{{car.model}}</h2> ----> How to get this working ?
         <h2>{{car.year}}</h2> ----> How to get this working ?
     </a>
</div>

users/ पथ में, एक सरणी के बजाय, सूचकांक द्वारा कारों की सूची संग्रहीत करके शुरू करें। तो आपकी संरचना होगी:

{
   "users": {
      "kato": {
         "cars": {
            "DeLorean": true
         }
      }
   },

   "cars": {
      "DeLorean": {
          model: "DeLorean",
          year: "1975"
      }
   }
}

अंगुलभ्रम का उपयोग करके इसमें शामिल होने के लिए, आपके पास कई तरीके उपलब्ध हैं। एंगुलरफ़िअर-केवल समाधान इस तरह दिख सकता है, $ का फायदा उठाते हुए विस्तार :

app.factory('CarsByUser', function($firebaseArray) {
   return $firebaseArray.$extend({
     $$added: function(snap) {
        return new Car(snap);
     },

     $$updated: function(snap) {
        // nothing to do here; the value of the index is not used
     },

     $$removed: function(snap) {
        this.$getRecord(snap.key()).destroy();
     },

     // these could be implemented in a manner consistent with the
     // use case and above code, for simplicity, they are disabled here
     $add: readOnly,
     $save: readOnly
   });

  var carsRef = new Firebase(...).child('cars');
  function Car(snap) {
     // create a reference to the data for a specific car
     this.$id = snap.key();
     this.ref = carsRef.child(this.$id);
     // listen for changes to the data
     this.ref.on('value', this.updated, this);
  }

  Car.prototype.updated = function(snap) {
     this.model = data.model;
     this.year = data.year;
  }

  Car.prototype.destroy = function() {
    this.ref.off('value', this.meta, this);
  };

  function readOnly() { throw new Error('This is a read only list'); }
});

app.controller('...', function($scope, CarsByUser, authData) {
   // authenticate first, preferably with resolve
   var ref = new Firebase(...).child(authData.uid);
   $scope.cars = CarsByUser($scope);
});

एक अधिक परिष्कृत और सुरुचिपूर्ण दृष्टिकोण के लिए, एक सामान्यीकृत कलेक्शन का उपयोग कर सकता है और एंगल फ़्रायर सरणी में रेफरी कर सकता है:

app.controller('...', function($scope, $firebaseArray) {
  var ref = new Firebase(...);
  var nc = new Firebase.util.NormalizedCollection(
     ref.child('users/' + authData.uid),
     ref.child('cars')
  )
  .select('cars.model', 'cars.year')
  .ref();

  $scope.cars = $firebaseArray(nc);
});




firebase