私は、オブジェクトのオブジェクトの子がidを持っているが、オブジェクト変数を取得しようとしたときにそれを望んでいないことに気付きました。オブジェクトのオブジェクトに何を保存したかったのですが、IDだけしか見つけられませんでしたか?どのように全体のオブジェクトの変数と配列を取得する必要はなく、オブジェクトの子供のIDから取得するgundb?
たとえば、シーンを管理してオブジェクトを保存して読み込み、簡単にアクセスできるようにしました。
{ X:0、 Y:0、 Z:0、 prarms:{高さ:0、幅:0} }私はそれを発見したデータをチェックする際に保存から
結果は異なる。
{X:0、Y :0、 Z:0、 prarms:#randomids }
Iが設定され、オブジェクトはUUIDを使用して一致した場合に置く使用します。それがどのように機能するかについて少し助けが必要です。オブジェクトデータ全体を取得しようとしましたが、gundbオブジェクトIDは取得しませんでした。
setのために部分的に動作するコードを取得し、データオブジェクトを部分的に動作させるために管理します。ここでは単純なバージョンの設定方法。
//console.log("saving object data????");
this.check_gunsceneobj(obj['uuid'],(bfind,id)=>{
//console.log("....CALLS");
var gscene = this.gun.get('scene');
//check child keys var is object to put var
function gunObjectAssign(_gun, _obj){
for(var i in _obj){
if(typeof _obj[i] == 'object'){
console.log(i);
//pathing for object child of object
_gun.path(i).put(_obj[i]);
gunObjectAssign(_gun.path(i),_obj[i]);
}
}
}
if(bfind){
console.log("set object scene[update]");
if(id !=null){
console.log(id);
gscene.path(id).put(obj);
gunObjectAssign(gscene.path(id),obj);
}
}else{
console.log("save object scene[insert]");
//console.log(obj);
gscene.set(obj);
}
console.log("object save?");
});
ここで取得オブジェクト。
function gunObjDataAssign(self,data){
for(var i in data){
if(typeof data[i] === 'object'){
if(data[i] !=null){
var id = data[i]['#'];
data[i] = {}; //clear id hash
self.get(id).val((objdata)=>{
delete objdata._;
data[i] = objdata;
gunObjDataAssign(self,objdata);
});
}
}
}
}
Gun.chain.valueobj = function (cb, opt) {
return this.val(function (val, field) {
if(val !=null){
delete val._;
}
gunObjDataAssign(this,val);
cb.call(this, val, field);
}, opt);
};
Gun.chain.liveobj = function (cb, opt) {
return this.on(function (val, field) {
delete val._;
gunObjDataAssign(this,val);
cb.call(this, val, field);
}, opt);
};
Gun.chain.eachobj = function() {
var each = this.map();
return this.valueobj.apply(each, arguments);
};
十分にテストされていません。しかし、それは一度シーンオブジェクトにプッシュしても何の更新も検出しようとはしませんでした。
スニペットから使用されたサンプルコード。