Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从SQL一到多解析NoSQL_Javascript_Database Design_Parse Platform_Nosql - Fatal编程技术网

Javascript 从SQL一到多解析NoSQL

Javascript 从SQL一到多解析NoSQL,javascript,database-design,parse-platform,nosql,Javascript,Database Design,Parse Platform,Nosql,我一直使用MySQL作为数据库,看到连接被NoSQL的解析API扭曲,我相信我的数据库设计存在缺陷 以下是我使用的: Game --------- id userA userB currentRound RoundScore // A Game can have 0-3 RoundScore --------- id game -> Pointer field to Game user round score (还有一个默认的用户集合,其中包含解析和游戏中所有与用户相关的字段,Rou

我一直使用MySQL作为数据库,看到连接被NoSQL的解析API扭曲,我相信我的数据库设计存在缺陷

以下是我使用的:

Game
---------
id
userA
userB
currentRound


RoundScore // A Game can have 0-3 RoundScore
---------
id
game -> Pointer field to Game
user
round
score
(还有一个默认的用户集合,其中包含解析和游戏中所有与用户相关的字段,RoundScore指向用户集合。这非常有效)

看到解析API的工作原理,我发现很难进行查询:

获取所有
游戏
及其(最多3次)
回合分数
其中
Game.userA=me
Game.userB=me

我可以很容易地获得所有比赛,但没有他们的
回合分数
。我不能两者都加入

我应该如何处理此查询或设计?
我应该将总分合并到游戏集合中吗?如果是这样,我应该如何声明新字段?

我已经阅读了所有这些页面:

我认为以下代码片段应该适合您:

var RoundScoreQuery = new Parse.Query("RoundScore");

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
     // results contains all games where "me" is a part of
     for (var i = 0; i < results.length; i++) {

      var gameId = results[i].get("id");
      RoundScoreQuery.equalTo("game", gameId);

      query.first({
        success: function(object) {
          // Successfully retrieved the object with the score
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
    }
  },
  error: function(error) {
    // There was an error.
  }
});
var RoundScoreQuery=newparse.Query(“RoundScore”);
var userAQuery=newparse.Query(“游戏”);
equalTo(“userA”,“me”);
var userBQuery=newparse.Query(“游戏”);
userBQuery.equalTo(“userB”、“me”);
var gamesQuery=Parse.Query.or(userAQuery,userBQuery);
gameskry.find({
成功:功能(结果){
//结果包含所有“我”是其中一部分的游戏
对于(var i=0;i
我已经阅读了所有这些页面:

我认为以下代码片段应该适合您:

var RoundScoreQuery = new Parse.Query("RoundScore");

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
     // results contains all games where "me" is a part of
     for (var i = 0; i < results.length; i++) {

      var gameId = results[i].get("id");
      RoundScoreQuery.equalTo("game", gameId);

      query.first({
        success: function(object) {
          // Successfully retrieved the object with the score
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
    }
  },
  error: function(error) {
    // There was an error.
  }
});
var RoundScoreQuery=newparse.Query(“RoundScore”);
var userAQuery=newparse.Query(“游戏”);
equalTo(“userA”,“me”);
var userBQuery=newparse.Query(“游戏”);
userBQuery.equalTo(“userB”、“me”);
var gamesQuery=Parse.Query.or(userAQuery,userBQuery);
gameskry.find({
成功:功能(结果){
//结果包含所有“我”是其中一部分的游戏
对于(var i=0;i
我已经阅读了所有这些页面:

我认为以下代码片段应该适合您:

var RoundScoreQuery = new Parse.Query("RoundScore");

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
     // results contains all games where "me" is a part of
     for (var i = 0; i < results.length; i++) {

      var gameId = results[i].get("id");
      RoundScoreQuery.equalTo("game", gameId);

      query.first({
        success: function(object) {
          // Successfully retrieved the object with the score
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
    }
  },
  error: function(error) {
    // There was an error.
  }
});
var RoundScoreQuery=newparse.Query(“RoundScore”);
var userAQuery=newparse.Query(“游戏”);
equalTo(“userA”,“me”);
var userBQuery=newparse.Query(“游戏”);
userBQuery.equalTo(“userB”、“me”);
var gamesQuery=Parse.Query.or(userAQuery,userBQuery);
gameskry.find({
成功:功能(结果){
//结果包含所有“我”是其中一部分的游戏
对于(var i=0;i
我已经阅读了所有这些页面:

我认为以下代码片段应该适合您:

var RoundScoreQuery = new Parse.Query("RoundScore");

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
     // results contains all games where "me" is a part of
     for (var i = 0; i < results.length; i++) {

      var gameId = results[i].get("id");
      RoundScoreQuery.equalTo("game", gameId);

      query.first({
        success: function(object) {
          // Successfully retrieved the object with the score
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
    }
  },
  error: function(error) {
    // There was an error.
  }
});
var RoundScoreQuery=newparse.Query(“RoundScore”);
var userAQuery=newparse.Query(“游戏”);
equalTo(“userA”,“me”);
var userBQuery=newparse.Query(“游戏”);
userBQuery.equalTo(“userB”、“me”);
var gamesQuery=Parse.Query.or(userAQuery,userBQuery);
gameskry.find({
成功:功能(结果){
//结果包含所有“我”是其中一部分的游戏
对于(var i=0;i
好的,这是一个很好的观点。
我将创建如下()所示的游戏对象:

不再需要标志“currentRound” 因为你知道现在的回合是什么 当你看记分1,记分2和记分3

现在,您只需使用此代码即可获得所有“我”是其中一部分的游戏:

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
    // results contains all games where "me" is a part of
  },
  error: function(error) {
    // There was an error.
  }
});
有关“关系数据的NoSQL设计模式”的更多信息,我推荐这篇文章:

好的,这是一个很好的观点。
我将创建如下()所示的游戏对象:

不再需要标志“currentRound” 因为你知道现在的回合是什么 当你看记分1,记分2和记分3

现在,您只需使用此代码即可获得所有“我”是其中一部分的游戏:

var userAQuery = new Parse.Query("Game");
userAQuery.equalTo("userA", "me");

var userBQuery = new Parse.Query("Game");
userBQuery.equalTo("userB", "me");

var gamesQuery = Parse.Query.or(userAQuery, userBQuery);

gamesQuery.find({
  success: function(results) {
    // results contains all games where "me" is a part of
  },
  error: function(error) {
    // There was an error.
  }
});
有关“关系数据的NoSQL设计模式”的更多信息,我推荐这篇文章:

好的,这是一个很好的观点。
我将创建如下()所示的游戏对象:

不再需要标志“currentRound” 因为你知道现在的回合是什么 当你看记分1,记分2和记分3