我有兩個解析班;公司和評級。這是一對多的關係。公司可以有很多評分。這是我在執行SQL語句:我想這在解析相當於Parse.js + AngularJS應用的關係型數據的查詢問題
SELECT Companies.name, Ratings.rating
FROM Companies
INNER JOIN Ratings
ON Ratings.name_id = Companies.name_id
ORDER BY Companies.name
,但我不知道如何去做。這是我目前試過的:
function getRatings() {
var tableA = new Parse.Query(Companies);
var tableB = new Parse.Query(Ratings);
tableB.equalTo("name_id", tableA.name_id);
tableB.find({
success: function(results) {
$scope.$apply(function() {
$scope.companies = results.map(function(obj) {
return {
id: obj.get("name_id"),
name: obj.get(tableA.name),
rating: obj.get("rating"),
parseObject: obj
};
});
});
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
我在控制器加載時調用這個函數。這個代碼顯示在我的輸出評級,但不是公司的名稱。
我試圖讓公司的所有上市公司對象,然後將它們配對的曾經擁有的收視對象的收視率。他們的共同祕鑰是name_id
。這是我用我的角度視圖中的代碼:
<div class="span12">
<div ng-repeat="company in companies | filter: query | orderBy: orderList"
class="well company-description">
<h1>{{company.name}}</h1>
<h3>Rating: {{company.rating}}</h3>
</div>
</div>
如果我是大錯特錯此,請讓我知道
非常感謝Lukas對你的文章的支持,現在你已經描述了它的意義。不過,我一直在嘗試你在這裏列出的第二個選項,但我似乎得到不正確的結果。它會返回整個收視率對象,並且我的評分將如下輸出:'[{「stars」:5,「objectId」:「V2NZoe64G2」,「createdAt」:「2013-03-08T18:54:05.372Z」 ,「updatedAt」:「2013-03-08T18:54:05.372Z」}]'using ratings.stars returns me undefined。 – Neil 2013-03-09 05:23:35
所以你只需要'stars'屬性,而不是整個'rating'對象? – Lukas 2013-03-09 06:21:38
TBH,我不確定。我不完全明白這裏發生了什麼。我認爲該公司的「收視率」正在被添加到「收視率」對象中嗎?我最終想做的是檢索平均評分......將所有「星星」加起來,除以總評分數。 – Neil 2013-03-09 16:31:41