FatFractal JavaScript(HTML5)SDKを使用してgrabBagAdd()メソッドを呼び出すと、エラーが発生します。この特定の問題の場合、私のデータモデルは単純で、カスタムTeamオブジェクトとデフォルトのFFUserオブジェクトの2つのオブジェクトタイプのみが含まれます。
関連するFFDL宣言:
CREATE OBJECTTYPE FFUser (userName STRING, firstName STRING, lastName STRING, email STRING, active BOOLEAN, authDomain STRING, groups GRABBAG /FFUserGroup, notif_ids GRABBAG /FFNotificationID)
CREATE OBJECTTYPE Team (teamName STRING, members GRABBAG /FFUser)
CREATE COLLECTION /FFUser OBJECTTYPE FFUser
CREATE COLLECTION /Teams OBJECTTYPE Team
JSオブジェクト宣言:
function Team(data){
if(data){
this.clazz = data.clazz;
this.guid = data.guid;
this.teamName = data.teamName;
}
else{
this.clazz = "Team";
this.guid = null;
this.teamName = null;
}
return this;
}
function FFUser(data){
if(data){
this.clazz = data.clazz;
this.userName = data.userName;
this.firstName = data.firstName;
this.lastName = data.lastName;
this.email = data.email;
this.active = data.active;
this.guid = data.guid;
}
else{
this.clazz = "FFUser";
this.userName = null;
this.firstName = null;
this.lastName = null;
this.email = null;
this.active = null;
this.guid = null;
}
return this;
}
選択したチームのメンバーのグラブバッグにFFUserを追加しようとしています。KnockoutJSバインディングを使用してWebアプリのデータを表示し、KnockoutJSオブザーバブルを使用してデータをローカルに保存しています。エラーを生成するユースケースの適切な手順は次のとおりです。
ユーザーがログインした後、アプリのバックエンドからTeamsをプルします。以下self.teams
は、HTML選択メニューにバインドされた監視可能な配列です。
function loadTeams() {
ff.getArrayFromUri("/ff/resources/Teams",function(loadedTeams) {
if(loadedTeams.length > 0) {
for(var i = 0; i < teams.length; i++) {
var team = new Team(loadedTeams[i]);
self.teams.push(team);
}
}
else console.log("No teams to load!");
},function(statusCode,responseText) {
alert(JSON.parse(responseText).statusMessage);
});
};
ユーザーは選択メニューからチームを選択し、チームメンバーとして追加するユーザー名を入力します。送信すると、grabBagAdd()が実行されます。以下self.selectedTeam
は、選択メニューの値へのオブザーバブルバインドであり、からのチームオブジェクトの1つが含まれていますself.teams
。また、self.addMemberEmail
ユーザー名入力ボックスの値への監視可能なバインドです。
self.addMember = function() {
if(self.addMemberEmail()) {
ff.getObjFromUri("/ff/resources/FFUser/(userName eq '" + self.addMemberEmail() + "')",function(user) {
if(user){
var member = new FFUser(user);
ff.grabBagAdd(member,self.selectedTeam(),"members",function() {
console.log("Added member to grabbag!");
},function(statusCode,responseText) {
alert(JSON.parse(responseText).statusMessage);
});
}
else alert("No users found with the provided username.");
},function(statusCode,responseText) {
alert(JSON.parse(responseText).statusMessage);
});
}
else alert("Must provide member email.");
};
FatFractalは400: Bad Request
次のようなエラーを返します。
FatFractal.handleGrabBagRequest 400, {"result":null,"statusMessage":"Cannot add NULL items to a object's grab bag"}
エラーをどうすればよいかわからない。どんな助けでもいただければ幸いです!