Предположим, у нас есть следующий объект:
table Tree {
objects : [ubyte];
nodes:[Tree];
}
Как вы можете видеть, каждый Tree
может иметь набор objects
и набор nodes
с типом Tree
. Я хочу сохранить объект QuadTree
. в то время как я хочу сохранить их, мы сталкиваемся с ошибкой
Uncaught Error: FlatBuffers: object serialization must not be nested.
, существует ли какой-либо метод или обходной путь для решения этой проблемы? Это моя функция, чтобы сохранить дерево
function () {
var tNodes = [];
if(this.nodes.length){
this.nodes.forEach(node => {
var data= node.save();
// console.log(treeOffset);
tNodes.push(data[0]);
});
}
var builder = new flatbuffers.Builder(0)
//Generate array of objects
const objectsArray = new Uint8Array(100000);
const view = new DataView(objectsArray.buffer);
const encoder = new TextEncoder();
let offset = 0;
for (let index = 0; index < this.objects.length; index++) {
view.setUint16(offset, index, true)
offset += 2
const str = this.objects[index];
const stringArray = encoder.encode(str);
view.setUint32(offset, stringArray.length, true);
offset += 4
objectsArray.set(stringArray, offset)
offset += stringArray.length;
}
var objectsOffset = GeoIPFS.Tree.createObjectsVector(builder, objectsArray.slice(0, offset));
var Tree = GeoIPFS.Tree;
Tree.startTree(builder);
Tree.addObjects(builder, objectsOffset);
tNodes.forEach(n=>{
Tree.createNodesVector(builder,n);
})
var treeOffset = Tree.endTree(builder);
builder.finish(treeOffset);
return [builder.asUint8Array(),treeOffset]
}