DOMのNodeをsocketでサーバに送りたい

実現したいこと

Node.js+herokuのWebアプリを開発中です。
window.getSelection().anchorNodeで取得した、フロントでの選択範囲を開始するNode(オブジェクト型)の情報を、socketでサーバーに送りたいのですが、うまくいきません。

Javascript(フロント)

1anchor_node = window.getSelection().anchorNode;2console.log(anchor_node);3//選択範囲を開始するNode(テキストノード)のテキストが表示される4console.log(typeof(anchor_node));5//objectと表示される6console.log(anchor_node.nodeType);7//3(TEXT_NODE)と表示される8 9socket.emit('anchor_node', anchor_node);

Javascript(サーバー)

1socket.on('anchor_node', (message) => {2 console.log(message);3 //{}とだけ表示される4});

こちらのページによると、socket.emitする際、オブジェクトにはJSON.stringify()が自動的に実行されるとあります。
JSON.stringify()が適用されたら、オブジェクト型のanchor_nodeがJSON表記になってよしなにサーバーにわたってくれるのかと思っていましたが、{}とだけ表示され、なぜか中身が消えて?います。
文字列や整数などは問題なく送信・受信ができているので、Nodeのみうまく渡せていない状況です。

サーバに渡したanchor_nodeの情報はデータベース(MySQL)に格納後、ユーザのフロント操作に応じて取り出され利用されます。
主に、ログインしているユーザの編集情報を再現するために利用されます。
その際、anchor_node.parentElementなどの処理をおこなうため、anchor_node.textContentだけを文字列化してsocketで送るという手法では情報が足りず、やはりオブジェクト型をJSON化して、全ての情報を保持しておきたいです。

window.getSelection().anchorNodeにこだわるというよりは、window.getSelection()の持っている情報をデータベースに保持しておければよいので、これ以外のアプローチもありそうでしたらぜひご指摘いただけますと幸いです。
ご教授よろしくお願いいたします。

追記:サーバに渡ったanchor_nodeを、このままMySQLにINSERTしたところ、[object Object]と表示されました

コメントを投稿

0 コメント