2016-04-22 7 views
0

Ich verwende bson-ext als native Bindung.Kann die bson-ext nativen Funktionen nicht aufrufen

Das Erstellen der nativen Datei .node hat bisher gut funktioniert. Ich installierte GCC, make und lief node-gyp configure und node-gyp build. Ich schließe jetzt die Datei in meinem node App wie so:

var bson = require('./bson/build/Release/bson.node'); 
var object = bson.BSON.prototype; 
console.log(object.serialize('hey')) 

Das Problem ist, erhalte ich diesen Fehler:

console.log(object.serialize({test: "turkey"}))

TypeError: Illegal invocation

ich verwirrt hier, weil, wenn ich console.log(object)

Es gibt aus:

BSON { 
calculateObjectSize: [Function: calculateObjectSize], 
serialize: [Function: serialize], 
serializeWithBufferAndIndex: [Function: serializeWithBufferAndIndex], 
deserialize: [Function: deserialize], 
deserializeStream: [Function: deserializeStream] } 

Dies sind die nativen Funktionen von C++, die zu bson.node gebaut wurden, richtig? Aber jetzt bin ich einfach nicht sicher, wie ich sie anrufen soll. Ich habe ihre GitHub-Seite auch für die Dokumentation überprüft, aber ohne Glück.

bearbeiten: Folgende:

var bson = require('./bson/build/Release/bson'); 
console.log(bson.BSON) 

Ausgänge:

[Function: BSON]

nächstes Ich betreibe:

console.log(bson.BSON().serialize({turkey: 'hey'}));

Aber rec eive:

console.log(bson.BSON().serialize({turkey: 'hey'}));

TypeError: First argument passed in must be an array of types

Dann laufe ich:

console.log(bson.BSON(['BSON']).serialize({turkey: 'hey'})); 

Und erhalten:

Segmentation fault

Antwort

0

I fand eine Lösung im Inneren des mongodb Paket.

(speziell unter \mongodb\node_modules\mongodb-core\lib\replset.js @ Linie).

Sie sind mit .native()

BSON = require('bson').native().BSON; 
var newBSON = new bson(); 
console.log(newBSON.serialize('hello')); 

Welche funktioniert:

<Buffer 32 00 00 00 02 30 00 02 00 00 00 68 00 02 31 00 02 00 00 00 65 00 02 32 00 02 00 00 00 6c 00 02 33 00 02 00 00 00 6c 00 02 34 00 02 00 00 00 6f 00 00> 

jedoch (Ein wenig Off-Topic, aber ich eine Frage gestern Why is JSON faster than BSON und die Abschluss war nativer Code im Gegensatz zu nicht-nativem Code, aber jetzt, selbst nach der Installation bson nativ, die performanc Die Ergebnisse sind in etwa gleich ... schade.