Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ejdb

Package Overview
Dependencies
Maintainers
1
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ejdb - npm Package Compare versions

Comparing version 1.1.13-1 to 1.1.14-1

node/README.md

74

node/ejdb.js

@@ -474,2 +474,76 @@ /**************************************************************************************************

/**
* Execute ejdb database command.
*
* Supported commands:
*
*
* 1) Exports database collections data. See ejdbexport() method.
*
* "export" : {
* "path" : string, //Exports database collections data
* "cnames" : [string array]|null, //List of collection names to export
* "mode" : int|null //Values: null|`JBJSONEXPORT` See ejdb.h#ejdbexport() method
* }
*
* Command response:
* {
* "log" : string, //Diagnostic log about executing this command
* "error" : string|null, //ejdb error message
* "errorCode" : int|0, //ejdb error code
* }
*
* 2) Imports previously exported collections data into ejdb.
*
* "import" : {
* "path" : string //The directory path in which data resides
* "cnames" : [string array]|null, //List of collection names to import
* "mode" : int|null //Values: null|`JBIMPORTUPDATE`|`JBIMPORTREPLACE` See ejdb.h#ejdbimport() method
* }
*
* Command response:
* {
* "log" : string, //Diagnostic log about executing this command
* "error" : string|null, //ejdb error message
* "errorCode" : int|0, //ejdb error code
* }
*
* If callback is not provided this function will be synchronous.
*
* @param {Object} cmd BSON command spec.
* @param {Function} [cb] Callback function with arguments: (error, obj) where:
* `obj`: Command response JSON object.
* @return Command response JSON object if callback is not provided.
*/
EJDB.prototype.command = function(cmd, cb) {
if (cb) {
this._impl.command(cmd, function(err, cursor) {
if (err) {
cb(err);
return;
}
if (cursor.next()) {
try {
cb(null, cursor.object());
} finally {
cursor.close();
}
} else {
cb(null, null);
}
});
} else {
var ret = null;
var cursor = this._impl.command(cmd);
if (cursor && typeof cursor === "object") {
if (cursor.next()) {
ret = cursor.object();
}
cursor.close();
}
return ret;
}
};
/**
* Convenient method to execute update queries.

@@ -476,0 +550,0 @@ * If callback is not provided this function will be synchronous.

13

node/tests/t2.js

@@ -272,3 +272,3 @@ var fs = require("fs");

test.ok(dm["collections"].constructor == Array);
var parrots = dm["collections"][0];
var parrots = dm["collections"][1];
test.ok(parrots);

@@ -450,3 +450,14 @@ test.equal(parrots["name"], "parrots");

module.exports.testEJDBCommand = function(test) {
jb.command({
"ping" : {}
}, function(err, pong) {
test.ifError(err);
test.ok(pong);
test.equal("pong", pong["log"]);
test.done();
})
};
module.exports.testClose = function(test) {

@@ -453,0 +464,0 @@ test.ok(jb);

6

package.json
{
"name" : "ejdb",
"version" : "1.1.13-1",
"version" : "1.1.14-1",
"config" : {
"windownloadurl_ia32" : "http://dl.dropboxusercontent.com/u/4709222/ejdb/tcejdb-1.1.13-mingw32-i686.zip",
"windownloadurl_x64" : "http://dl.dropboxusercontent.com/u/4709222/ejdb/tcejdb-1.1.13-mingw32-x86_64.zip"
"windownloadurl_ia32" : "http://dl.dropboxusercontent.com/u/4709222/ejdb/tcejdb-1.1.14-mingw32-i686.zip",
"windownloadurl_x64" : "http://dl.dropboxusercontent.com/u/4709222/ejdb/tcejdb-1.1.14-mingw32-x86_64.zip"
},

@@ -8,0 +8,0 @@ "main" : "node/ejdb.js",

@@ -7,3 +7,3 @@ [![EJDB](https://raw.github.com/Softmotions/ejdb/master/misc/ejdblogo3.png)](http://ejdb.org)

It aims to be a fast [MongoDB](http://mongodb.org)-like library **which can be embedded into C/C++/NodeJS/Python/Lua/Java/Ruby applications under terms of LGPL license.**
It aims to be a fast [MongoDB](http://mongodb.org)-like library **which can be embedded into C/C++, .Net, NodeJS, Python, Lua, Go, Java and Ruby applications under terms of LGPL license.**

@@ -16,2 +16,4 @@ EJDB is the C library based on modified version of [Tokyo Cabinet](http://fallabs.com/tokyocabinet/).

===============================
* `2013-07-15` **[Google Go binding] (https://github.com/mkilling/goejdb)**
* `2013-06-23` **[C# .Net binding] (https://github.com/Softmotions/ejdb/tree/master/nejdb)**
* `2013-06-02` **[Adobe Air Native Extension (ANE) for EJDB (Thanks to @thejustinwalsh)] (https://github.com/thejustinwalsh/airejdb)**

@@ -33,25 +35,14 @@ * `2013-05-29` **[EJDB Python 2.7.x binding available](https://github.com/Softmotions/ejdb/blob/master/pyejdb/)**

* MongoDB-like queries and overall philosophy.
* [Collection joins](https://github.com/Softmotions/ejdb/wiki/Collection-joins)
* Collection level write locking.
* Collection level transactions.
* String token matching queries: ```$stror``` ```$strand```
* [Node.js](http://nodejs.org) binding
* [Collection joins](https://github.com/Softmotions/ejdb/wiki/Collection-joins)
* Python/Lua/Java/Ruby bindings
* Node.js/Python/Lua/Java/Ruby/.Net/Go bindings
* [Adobe Air Native Extension (ANE) for EJDB] (https://github.com/thejustinwalsh/airejdb)
* [Pike language binding] (https://github.com/hww3/pike_modules-ejdb)
Documentation
================================
* **[The great intro to the EJDB](http://blog.abigopal.com/post/51616277039/ejdb)**
* **[The brief intro to the EJDB](http://blog.abigopal.com/post/51616277039/ejdb)**
* **[EJDB Command line interface](https://github.com/Softmotions/ejdb/wiki/EJDB-Command-line-interface)**
* **[NodeJS binding](#nodejs-binding)**
* [Installation](#installation)
* [Samples](#ejdb-nodejs-samples)
* [NodeJS API](#ejdb-nodejs-api)
* **[Python 2.7/3.x binding](https://github.com/Softmotions/ejdb/blob/master/pyejdb/)**
* **[Lua binding](https://github.com/Softmotions/ejdb/blob/master/luaejdb/)**
* **[Java binding](https://github.com/Softmotions/ejdb/blob/master/jejdb/)**
* **[Ruby binding](https://github.com/Softmotions/ejdb/blob/master/rbejdb/)**
* **[EJDB C Library](#ejdb-c-library)**

@@ -61,2 +52,12 @@ * [Building & Installation](#building--installation)

* [C API](#c-api)
* **Bindings**
* **[C# .Net] (https://github.com/Softmotions/ejdb/tree/master/nejdb)**
* **[NodeJS] (https://github.com/Softmotions/ejdb/blob/master/node/)**
* **[Python 2.7/3.x](https://github.com/Softmotions/ejdb/blob/master/pyejdb/)**
* **[Lua](https://github.com/Softmotions/ejdb/blob/master/luaejdb/)**
* **[Java](https://github.com/Softmotions/ejdb/blob/master/jejdb/)**
* **[Ruby](https://github.com/Softmotions/ejdb/blob/master/rbejdb/)**
* **[Go](https://github.com/mkilling/goejdb/)**
* **[Pike language] (https://github.com/hww3/pike_modules-ejdb)**
* **[Adobe Air] (https://github.com/thejustinwalsh/airejdb)**
* **[Collection joins](https://github.com/Softmotions/ejdb/wiki/Collection-joins)**

@@ -70,3 +71,3 @@

NodeJS binding
EJDB NodeJS
=================================

@@ -125,486 +126,5 @@

```
**[EJDB NodeJS binding page](https://github.com/Softmotions/ejdb/blob/master/node)**
Installation
--------------------------------
**System libraries:**
* g++
* zlib
On Debian/Ubuntu linux you can install it as follows:
~~~~~~
sudo apt-get install g++ zlib1g zlib1g-dev
~~~~~~
**Installation from node package manager on linux/macos:**
npm install ejdb
**[Installing EJDB NodeJS module on windows](https://github.com/Softmotions/ejdb/blob/master/tcejdb/WIN32.md#ejdb-nodejs-module-installation)**
EJDB NodeJS samples
---------------------------------
* [node/samples](https://github.com/Softmotions/ejdb/tree/master/node/samples)
* [node/tests](https://github.com/Softmotions/ejdb/tree/master/node/tests)
* [nwk-ejdb-address-book](https://github.com/Softmotions/nwk-ejdb-address-book)
EJDB NodeJS API
----------------------------------
<a name="open" />
### EJDB.open(dbFile, openMode)
Open database. Return database instance handle object.
<br/>Default open mode: `JBOWRITER | JBOCREAT`.
<br/>This is blocking function.
__Arguments__
* {String} dbFile Database main file name
* {Number} `[openMode=JBOWRITER | JBOCREAT]` Bitmast of open modes:
- `JBOREADER` Open as a reader.
- `JBOWRITER` Open as a writer.
- `JBOCREAT` Create if db file not exists
- `JBOTRUNC` Truncate db.
---------------------------------------
<a name="close" />
### close()
Close database.
<br/>If database was not opened it does nothing.
<br/>This is blocking function.
---------------------------------------
<a name="isOpen"/>
### isOpen()
Check if database in opened state.
---------------------------------------
<a name="ensureCollection"/>
### ensureCollection(cname, copts)
Automatically creates new collection if it does't exists.
Collection options `copts` applied only for newly created collection.
For existing collections `copts` takes no effect.
Collection options (copts):
* cachedrecords : Max number of cached records in shared memory segment. Default: 0
* records : Estimated number of records in this collection. Default: 65535.
* large : Specifies that the size of the database can be larger than 2GB. Default: false
* compressed : If true collection records will be compressed with DEFLATE compression. Default: false.
<br/>This is blocking function.
__Arguments__
* {String} cname Name of collection.
* {Object} `[copts]` Collection options.
---------------------------------------
<a name="dropCollection"/>
### dropCollection(cname, prune, cb)
Drop collection.
Call variations:
dropCollection(cname)
dropCollection(cname, cb)
dropCollection(cname, prune, cb)
__Arguments__
* {String} cname Name of collection.
* {Boolean} `[prune=false]` If true the collection data will erased from disk.
* {Function} `[cb]` Callback args: (error)
---------------------------------------
<a name="save"/>
### save(cname, jsarr, cb)
Save/update specified JSON objects in the collection.
If collection with `cname` does not exists it will be created.
Each persistent object has unique identifier (OID) placed in the `_id` property.
If a saved object does not have `_id` it will be autogenerated.
To identify and update object it should contains `_id` property.
If callback is not provided this function will be synchronous.
Call variations:
save(cname, <json object>|<Array of json objects>, [options] [cb])
save(cname, <json object>|<Array of json objects>, [cb])
NOTE: Field names of passed JSON objects may not contain `$` and `.` characters,
error condition will be fired in this case.
__Arguments__
* {String} **cname** Name of collection.
* {Array|Object} jsarr Signle JSON object or array of JSON objects to save
* {Function} `[cb]` Callback args: (error, {Array} of OIDs for saved objects)
__Return__
* {Array} of OIDs of saved objects in synchronous mode otherwise returns {undefined}.
--------------------------------------
<a name="load"/>
### load(cname, oid, cb)
Loads JSON object identified by OID from the collection.
If callback is not provided this function will be synchronous.
__Arguments__
* {String} cname Name of collection
* {String} oid Object identifier (OID)
* {Function} cb Callback args: (error, obj)
`obj`: Retrieved JSON object or NULL if it is not found.
__Return__
* JSON object or {null} if it is not found in synchronous mode otherwise return {undefined}.
--------------------------------------
<a name="remove"/>
### remove(cname, oid, cb)
Removes JSON object from the collection.
If callback is not provided this function will be synchronous.
__Arguments__
* {String} cname Name of collection
* {String} oid Object identifier (OID)
* {Function} cb Callback args: (error)
--------------------------------------
<a name="find"/>
### find(cname, qobj, orarr, hints, cb)
Execute query on collection.
EJDB queries inspired by MongoDB (mongodb.org) and follows same philosophy.
Supported queries:
- Simple matching of String OR Number OR Array value:
- {'fpath' : 'val', ...}
- $not Negate operation.
- {'fpath' : {'$not' : val}} //Field not equal to val
- {'fpath' : {'$not' : {'$begin' : prefix}}} //Field not begins with val
- $begin String starts with prefix
- {'fpath' : {'$begin' : prefix}}
- $gt, $gte (>, >=) and $lt, $lte for number types:
- {'fpath' : {'$gt' : number}, ...}
- $bt Between for number types:
- {'fpath' : {'$bt' : [num1, num2]}}
- $in String OR Number OR Array val matches to value in specified array:
- {'fpath' : {'$in' : [val1, val2, val3]}}
- $nin - Not IN
- $strand String tokens OR String array val matches all tokens in specified array:
- {'fpath' : {'$strand' : [val1, val2, val3]}}
- $stror String tokens OR String array val matches any token in specified array:
- {'fpath' : {'$stror' : [val1, val2, val3]}}
- $exists Field existence matching:
- {'fpath' : {'$exists' : true|false}}
- $icase Case insensitive string matching:
- {'fpath' : {'$icase' : 'val1'}} //icase matching
Ignore case matching with '$in' operation:
- {'name' : {'$icase' : {'$in' : ['tHéâtre - театр', 'heLLo WorlD']}}}
For case insensitive matching you can create special type of string index.
- $elemMatch The $elemMatch operator matches more than one component within an array element.
- { array: { $elemMatch: { value1 : 1, value2 : { $gt: 1 } } } }
Restriction: only one $elemMatch allowed in context of one array field.
- Queries can be used to update records:
$set Field set operation.
- {.., '$set' : {'field1' : val1, 'fieldN' : valN}}
$upsert Atomic upsert. If matching records are found it will be '$set' operation,
otherwise new record will be inserted with fields specified by argment object.
- {.., '$upsert' : {'field1' : val1, 'fieldN' : valN}}
$inc Increment operation. Only number types are supported.
- {.., '$inc' : {'field1' : number, ..., 'field1' : number}
$dropall In-place record removal operation.
- {.., '$dropall' : true}
$addToSet Atomically adds value to the array only if its not in the array already.
If containing array is missing it will be created.
- {.., '$addToSet' : {'fpath' : val1, 'fpathN' : valN, ...}}
$addToSetAll Batch version if $addToSet
- {.., '$addToSetAll' : {'fpath' : [array of values to add], ...}}
$pull Atomically removes all occurrences of value from field, if field is an array.
- {.., '$pull' : {'fpath' : val1, 'fpathN' : valN, ...}}
$pullAll Batch version of $pull
- {.., '$pullAll' : {'fpath' : [array of values to remove], ...}}
NOTE: It is better to execute update queries with `$onlycount=true` hint flag
or use the special `update()` method to avoid unnecessarily rows fetching.
NOTE: Negate operations: $not and $nin not using indexes
so they can be slow in comparison to other matching operations.
NOTE: Only one index can be used in search query operation.
NOTE: If callback is not provided this function will be synchronous.
QUERY HINTS (specified by `hints` argument):
- $max Maximum number in the result set
- $skip Number of skipped results in the result set
- $orderby Sorting order of query fields.
- $onlycount true|false If `true` only count of matching records will be returned
without placing records in result set.
- $fields Set subset of fetched fields
If a field presented in $orderby clause it will be forced to include in resulting records.
Example:
hints: {
"$orderby" : { //ORDER BY field1 ASC, field2 DESC
"field1" : 1,
"field2" : -1
},
"$fields" : { //SELECT ONLY {_id, field1, field2}
"field1" : 1,
"field2" : 1
}
}
Many C API query examples can be found in `tcejdb/testejdb/t2.c` test case.
To traverse selected records cursor object is used:
- Cursor#next() Move cursor to the next record and returns true if next record exists.
- Cursor#hasNext() Returns true if cursor can be placed to the next record.
- Cursor#field(name) Retrieve value of the specified field of the current JSON object record.
- Cursor#object() Retrieve whole JSON object with all fields.
- Cursor#reset() Reset cursor to its initial state.
- Cursor#length Read-only property: Number of records placed into cursor.
- Cursor#pos Read/Write property: You can set cursor position: 0 <= pos < length
- Cursor#close() Closes cursor and free cursor resources. Cursor cant be used in closed state.
Call variations of find():
- find(cname, [cb])
- find(cname, qobj, [cb])
- find(cname, qobj, hints, [cb])
- find(cname, qobj, qobjarr, [cb])
- find(cname, qobj, qobjarr, hints, [cb])
__Arguments__
* {String} cname Name of collection
* {Object} qobj Main JSON query object
* {Array} `[orarr]` Array of additional OR query objects (joined with OR predicate).
* {Object} `[hints]` JSON object with query hints.
* {Function} cb Callback args: (error, cursor, count)
`cursor`: Cursor object to traverse records
qobj `count`: Total number of selected records
__Return__
* If callback is provided returns {undefined}
* If no callback and `$onlycount` hint is set returns count {Number}.
* If no callback and no `$onlycount` hint returns cursor {Object}.
--------------------------------------------
<a name="findOne"/>
### findOne(cname, qobj, orarr, hints, cb)
Same as #find() but retrieves only one matching JSON object.
Call variations of findOne():
findOne(cname, [cb])
findOne(cname, qobj, [cb])
findOne(cname, qobj, hints, [cb])
findOne(cname, qobj, qobjarr, [cb])
findOne(cname, qobj, qobjarr, hints, [cb])
__Arguments__
* {String} cname Name of collection
* {Object} qobj Main JSON query object
* {Array} `[orarr]` Array of additional OR query objects (joined with OR predicate).
* {Object} `[hints]` JSON object with query hints.
* {Function} cb Callback args: (error, obj)
`obj` Retrieved JSON object or NULL if it is not found.
__Return__
* If callback is provided returns {undefined}
* If no callback is provided returns found {Object} or {null}
-----------------------------------
<a name="findOne"/>
### update(cname, qobj, orarr, hints, cb)
Convenient method to execute update queries.
* `$set` Field set operation:
- {some fields for selection, '$set' : {'field1' : {obj}, ..., 'field1' : {obj}}}
* `$upsert` Atomic upsert. If matching records are found it will be '$set' operation,
otherwise new record will be inserted with fields specified by argment object.
- {.., '$upsert' : {'field1' : val1, 'fieldN' : valN}}
* `$inc` Increment operation. Only number types are supported.
- {some fields for selection, '$inc' : {'field1' : number, ..., 'field1' : {number}}
* `$dropall` In-place record removal operation.
- {some fields for selection, '$dropall' : true}
* `$addToSet` | `$addToSetAll` Atomically adds value to the array only if its not in the array already.
If containing array is missing it will be created.
- {.., '$addToSet' : {'fpath' : val1, 'fpathN' : valN, ...}}
* `$pull` | `pullAll` Atomically removes all occurrences of value from field, if field is an array.
- {.., '$pull' : {'fpath' : val1, 'fpathN' : valN, ...}}
Call variations of update():
update(cname, [cb])
update(cname, qobj, [cb])
update(cname, qobj, hints, [cb])
update(cname, qobj, qobjarr, [cb])
update(cname, qobj, qobjarr, hints, [cb])
__Arguments__
* {String} cname Name of collection
* {Object} qobj Update JSON query object
* {Array} `[orarr]` Array of additional OR query objects (joined with OR predicate).
* {Object} `[hints]` JSON object with query hints.
* {Function} cb Callback args: (error, count)
`count` The number of updated records.
__Return__
* If callback is provided returns {undefined}.
* If no callback is provided returns {Number} of updated objects.
-----------------------------------
<a name="count"/>
### count(cname, qobj, orarr, hints, cb)
Convenient count(*) operation.
Call variations of count():
count(cname, [cb])
count(cname, qobj, [cb])
count(cname, qobj, hints, [cb])
count(cname, qobj, qobjarr, [cb])
count(cname, qobj, qobjarr, hints, [cb])
__Arguments__
* {String} cname Name of collection
* {Object} qobj Main JSON query object
* {Array} `[orarr]` Array of additional OR query objects (joined with OR predicate).
* {Object} `[hints]` JSON object with query hints.
* {Function} cb Callback args: (error, count)
`count`: Number of matching records.
__Return__
* If callback is provided returns {undefined}.
* If no callback is provided returns {Number} of matched object.
-----------------------------------
<a name="sync"/>
### sync(cb)
Synchronize entire EJDB database with disk.
__Arguments__
* {Function} cb Callback args: (error)
-----------------------------------
<a name="dropIndexes"/>
### dropIndexes(cname, path, cb)
Drop indexes of all types for JSON field path.
__Arguments__
* {String} cname Name of collection
* {String} path JSON field path
* {Function} `[cb]` Optional callback function. Callback args: (error)
------------------------------------
<a name="optimizeIndexes"/>
### optimizeIndexes(cname, path, cb)
Optimize indexes of all types for JSON field path.
Performs B+ tree index file optimization.
__Arguments__
* {String} cname Name of collection
* {String} path JSON field path
* {Function} `[cb]` Optional callback function. Callback args: (error)
-----------------------------------
<a name="ensureIndex"/>
### ensureStringIndex(cname, path, cb)
### ensureIStringIndex(cname, path, cb)
### ensureNumberIndex(cname, path, cb)
### ensureArrayIndex(cname, path, cb)
Ensure index presence of String|Number|Array type for JSON field path.
`IString` is the special type of String index for case insensitive matching.
__Arguments__
* {String} cname Name of collection
* {String} path JSON field path
* {Function} `[cb]` Optional callback function. Callback args: (error)
-----------------------------------
<a name="rebuildIndex"/>
### rebuildStringIndex(cname, path, cb)
### rebuildIStringIndex(cname, path, cb)
### rebuildNumberIndex(cname, path, cb)
### rebuildArrayIndex(cname, path, cb)
Rebuild index of String|Number|Array type for JSON field path.
`IString` is the special type of String index for case insensitive matching.
__Arguments__
* {String} cname Name of collection
* {String} path JSON field path
* {Function} `[cb]` Optional callback function. Callback args: (error)
-----------------------------------
<a name="dropIndex"/>
### dropStringIndex(cname, path, cb)
### dropIStringIndex(cname, path, cb)
### dropNumberIndex(cname, path, cb)
### dropArrayIndex(cname, path, cb)
Drop index of String|Number|Array type for JSON field path.
`IString` is the special type of String index for case insensitive matching.
__Arguments__
* {String} cname Name of collection
* {String} path JSON field path
* {Function} `[cb]` Optional callback function. Callback args: (error)
-----------------------------------
EJDB Python binding
EJDB Python
==================================

@@ -650,5 +170,5 @@

```
**[EJDB Python 2.7/3.x binding page](https://github.com/Softmotions/ejdb/blob/master/pyejdb/README.md)**
**[EJDB Python 2.7/3.x binding page](https://github.com/Softmotions/ejdb/blob/master/pyejdb)**
EJDB Lua binding
EJDB Lua
==================================

@@ -720,5 +240,152 @@

```
* **[Lua binding](https://github.com/Softmotions/ejdb/blob/master/luaejdb/README.md)**
**[EJDB Lua binding page](https://github.com/Softmotions/ejdb/blob/master/luaejdb)**
EJDB Go binding
==================================
One snippet intro
-----------------------------------
```go
package ejdbtutorial
import (
"fmt"
"github.com/mkilling/goejdb"
"labix.org/v2/mgo/bson"
"os"
)
func main() {
// Create a new database file and open it
jb, err := goejdb.Open("addressbook", JBOWRITER | JBOCREAT | JBOTRUNC)
if err != nil {
os.Exit(1)
}
// Get or create collection 'contacts'
coll, _ := jb.CreateColl("contacts", nil)
// Insert one record:
// JSON: {'name' : 'Bruce', 'phone' : '333-222-333', 'age' : 58}
rec := map[string]interface{} {"name" : "Bruce", "phone" : "333-222-333", "age" : 58}
bsrec, _ := bson.Marshal(rec)
coll.SaveBson(bsrec)
fmt.Printf("\nSaved Bruce")
// Now execute query
res, _ := coll.Find(`{"name" : {"$begin" : "Bru"}}`) // Name starts with 'Bru' string
fmt.Printf("\n\nRecords found: %d\n", len(res))
// Now print the result set records
for _, bs := range res {
var m map[string]interface{}
bson.Unmarshal(bs, &m)
fmt.Println(m)
}
// Close database
jb.Close()
}
```
**[EJDB Go binding page](https://github.com/mkilling/goejdb)**
EJDB Ruby binding
==================================
One snippet intro
---------------------------------
```Ruby
require "rbejdb"
#Open zoo DB
jb = EJDB.open("zoo", EJDB::DEFAULT_OPEN_MODE | EJDB::JBOTRUNC)
parrot1 = {
"name" => "Grenny",
"type" => "African Grey",
"male" => true,
"age" => 1,
"birthdate" => Time.now,
"likes" => ["green color", "night", "toys"],
"extra1" => nil
}
parrot2 = {
"name" => "Bounty",
"type" => "Cockatoo",
"male" => false,
"age" => 15,
"birthdate" => Time.now,
"likes" => ["sugar cane"],
"extra1" => nil
}
jb.save("parrots", parrot1, parrot2)
puts "Grenny OID: #{parrot1["_id"]}"
puts "Bounty OID: #{parrot2["_id"]}"
results = jb.find("parrots", {"likes" => "toys"}, {"$orderby" => {"name" => 1}})
puts "Found #{results.count} parrots"
results.each { |res|
puts "#{res['name']} likes toys!"
}
results.close #It's not mandatory to close cursor explicitly
jb.close #Close the database
```
**[EJDB Ruby binding page](https://github.com/Softmotions/ejdb/blob/master/rbejdb/)**
EJDB Adobe AIR binding
==================================
One snippet intro
---------------------------------
```as3
// Open the zoo DB
var db:EJDBDatabase = EJDB.open("zoo", EJDB.DEFAULT_OPEN_MODE | EJDB.JBOTRUNC) as EJDBDatabase;
var parrot1:Object = {
"name" : "Grenny",
"type" : "African Grey",
"male" : true,
"age" : 1,
"birthdate" : new Date(),
"likes" : ["green color", "night", "toys"],
"extra1" : null
};
var parrot2:Object = {
"name" : "Bounty",
"type" : "Cockatoo",
"male" : false,
"age" : 15,
"birthdate" : new Date(),
"likes" : ["sugar cane"]
};
var oids:Array = db.save("parrots", [parrot1, parrot2]);
trace("Grenny OID: " + parrot1._id);
trace("Bounty OID: " + parrot2._id);
var cursor:EJDBCursor = db.find("parrots",
{"likes" : "toys"},
[],
{"$orderby" : {"name" : 1}}
);
trace("Found " + cursor.length + " parrots");
while (cursor.next()) {
trace(cursor.field("name") + " likes toys!");
}
cursor.close(); // It IS mandatory to close cursor explicitly to free up resources
db.close(); // Close the database
```
**[Adobe Air Native Extension (ANE) for EJDB] (https://github.com/thejustinwalsh/airejdb)**
EJDB C Library

@@ -730,3 +397,3 @@ ==================================

~~~~~~
```C
#include <tcejdb/ejdb.h>

@@ -793,7 +460,6 @@

}
~~~~~~
```
You can save this code in `csnippet.c` And build:
```sh

@@ -820,7 +486,7 @@ gcc -std=c99 -Wall -pedantic -c -o csnippet.o csnippet.c

~~~~~~
```sh
cd ./tcejdb
./configure --prefix=<installation prefix> && make && make check
make install
~~~~~~
```
* library name: **tcejdb** (with pkgconfig)

@@ -968,7 +634,1 @@ * main include header: ```<tcejdb/ejdb.h>```

* Collect collection index statistic
Related software
------------------------------------
[Connect session store backed by EJDB database](https://github.com/Softmotions/connect-session-ejdb)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc