1

Angularfire docs によると、 を介して返されたオブジェクトを操作する場合、オブジェクトのプロパティを$asObject()定義してから を使用することで、そのオブジェクトの優先度を設定できます。$priority$save()

私のコードはうまく機能しますが、$priority何もしていません。コメントに完全な説明を含むコードを次に示します。

app.factory('MyService', function($rootScope, $firebase) {

  // The complete Firebase url
  var ref = *obfuscated*;

  // Returning the dataset as an object containing objects
  var data = $firebase(ref).$asObject;

  // This object is what's returned by MyService
  var Data = {

    // Method to create a new object within the data set,
    // keyed by myId. Attempting to set priority for the
    // record via $priority. returnData.uid is a valid string.
    create: function(returnData, myId) {
      data[myId] = {
        myId: myId,
        $priority: returnData.uid
      };

      // No need to explain the stuff between here and the
      // $rootScope listener below, just added for context
      data.$save().then(function() {
        setMyId(myId);
      });
    },
    findByMyId: function(myId) {
      if (myId) {
        return data[myId];
      }
    }
  };

  function setMyId(myId) {
    $rootScope.myId = User.findByMyId(myId);
  }

  // This event listener works fine, fires
  // at user login and returns data
  $rootScope.$on('$firebaseSimpleLogin:login', function(e, returnData) {

    // returnData.uid has the correct value - this
    // function should return the object(aka record) with
    // a priority matching returnData.uid
    var query = $firebase(ref.startAt(returnData.uid).endAt(returnData.uid)).$asObject();

    // console shows an object with the normal $firebase
    // properties, but no records. If I define query without
    // limiting the set ($firebase(ref).$asObject()), it returns
    // the full set just fine. The priority on all records is still
    // null.
    console.log(query);    

    query.$loaded(function() {
      setData(query.myId);
    });
  });

  return Data;
});

はい、Thinkster.io のチュートリアルに従っていて、第 7 章にいます。いいえ、これはその章に関する他の質問と重複していません。例にある Angularfire 0.8 以前のコードを回避する方法を既に見つけました。 $priority を設定することはできません。これまでに、自分自身の努力と Web で解決策を見つけるのに約 5 時間を費やしました。

テイカーはいますか?

4

1 に答える 1