1
0
mirror of https://github.com/node-red/node-red-nodes.git synced 2023-10-10 13:36:58 +02:00

Let LevelDB node handle json object (and binary) as well as text.

to close #626
This commit is contained in:
Dave Conway-Jones 2020-02-17 22:42:56 +00:00
parent a498bd16b5
commit 3fff2c404e
No known key found for this signature in database
GPG Key ID: 302A6725C594817F
3 changed files with 19 additions and 8 deletions

View File

@ -1,16 +1,26 @@
<script type="text/x-red" data-template-name="leveldbase"> <script type="text/html" data-template-name="leveldbase">
<div class="form-row"> <div class="form-row">
<label for="node-config-input-db"><i class="fa fa-briefcase"></i> Database</label> <label for="node-config-input-db"><i class="fa fa-briefcase"></i> Database</label>
<input type="text" id="node-config-input-db" placeholder="database path/name"> <input type="text" id="node-config-input-db" placeholder="database path/name">
</div> </div>
<div class="form-row">
<label for="node-config-input-encoding"><i class="fa fa-random"></i> Values are</label>
<select type="text" id="node-config-input-encoding">
<option value="utf8">text</option>
<option value="json">JSON</option>
<option value="binary">binary</option>
</select>
</div>
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
RED.nodes.registerType('leveldbase',{ RED.nodes.registerType('leveldbase',{
category: 'config', category: 'config',
defaults: { defaults: {
db: {value:"",required:true} db: {value:"",required:true},
encoding: {value:"utf8"}
}, },
label: function() { label: function() {
return this.db; return this.db;
@ -18,7 +28,7 @@
}); });
</script> </script>
<script type="text/x-red" data-template-name="leveldb in"> <script type="text/html" data-template-name="leveldb in">
<div class="form-row node-input-level"> <div class="form-row node-input-level">
<label for="node-input-level"><i class="fa fa-briefcase"></i> Database</label> <label for="node-input-level"><i class="fa fa-briefcase"></i> Database</label>
<input type="text" id="node-input-level"> <input type="text" id="node-input-level">
@ -29,7 +39,7 @@
</div> </div>
</script> </script>
<script type="text/x-red" data-help-name="leveldb in"> <script type="text/html" data-help-name="leveldb in">
<p>Uses <a href="https://code.google.com/p/leveldb/" target="_new"><i>LevelDB</i></a> for a simple key value pair database.</p> <p>Uses <a href="https://code.google.com/p/leveldb/" target="_new"><i>LevelDB</i></a> for a simple key value pair database.</p>
<p>Use this node to <b>get</b>, or retrieve the data already saved in the database.</p> <p>Use this node to <b>get</b>, or retrieve the data already saved in the database.</p>
<p><code>msg.topic</code> must hold the <i>key</i> for the database, and the result is returned in <code>msg.payload</code>.</p> <p><code>msg.topic</code> must hold the <i>key</i> for the database, and the result is returned in <code>msg.payload</code>.</p>
@ -58,7 +68,7 @@
</script> </script>
<script type="text/x-red" data-template-name="leveldb out"> <script type="text/html" data-template-name="leveldb out">
<div class="form-row node-input-level"> <div class="form-row node-input-level">
<label for="node-input-level"><i class="fa fa-briefcase"></i> Database</label> <label for="node-input-level"><i class="fa fa-briefcase"></i> Database</label>
<input type="text" id="node-input-level"> <input type="text" id="node-input-level">
@ -77,7 +87,7 @@
</script> </script>
<script type="text/x-red" data-help-name="leveldb out"> <script type="text/html" data-help-name="leveldb out">
<p>Uses <a href="https://code.google.com/p/leveldb/" target="_new"><i>LevelDB</i></a> for a simple key value pair database.</p> <p>Uses <a href="https://code.google.com/p/leveldb/" target="_new"><i>LevelDB</i></a> for a simple key value pair database.</p>
<p>Use this node to either <b>put</b> (store) the <code>msg.payload</code> to the named database file, using <code>msg.topic</code> as the key.</p> <p>Use this node to either <b>put</b> (store) the <code>msg.payload</code> to the named database file, using <code>msg.topic</code> as the key.</p>
<p>To <b>delete</b> information select delete in the properties dialogue and again use <code>msg.topic</code> as the key.</b>.</p> <p>To <b>delete</b> information select delete in the properties dialogue and again use <code>msg.topic</code> as the key.</b>.</p>

View File

@ -6,9 +6,10 @@ module.exports = function(RED) {
function LevelNode(n) { function LevelNode(n) {
RED.nodes.createNode(this,n); RED.nodes.createNode(this,n);
this.dbname = n.db; this.dbname = n.db;
this.encoding = n.encoding || "utf8";
this.ready = false; this.ready = false;
var node = this; var node = this;
lvldb(this.dbname, function(err, db) { lvldb(this.dbname, {valueEncoding:this.encoding}, function(err, db) {
if (err) { node.error(err); } if (err) { node.error(err); }
node.db = db; node.db = db;
node.db.on('ready', function() { node.ready = true; }); node.db.on('ready', function() { node.ready = true; });

View File

@ -1,6 +1,6 @@
{ {
"name" : "node-red-node-leveldb", "name" : "node-red-node-leveldb",
"version" : "0.2.0", "version" : "0.3.0",
"description" : "A Node-RED node to read and write to a LevelDB database", "description" : "A Node-RED node to read and write to a LevelDB database",
"dependencies" : { "dependencies" : {
"level" : "^6.0.0" "level" : "^6.0.0"