Skip to content

Commit

Permalink
feat: 增加 bson_iter_init 初始化判断 (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
friskfly authored Oct 10, 2020
1 parent d5295fb commit 9d53981
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions bson_wrapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -106,22 +106,22 @@ v8::Local<v8::Value> v8_value_from_bson_iter(bson_iter_t* iter, v8::Local<v8::Va

v8::Local<v8::Value> v8_value_from_bson(bson_t* b) {
bson_iter_t iter;
bson_iter_init(&iter, b);
bson_iter_next(&iter);
const char* key = bson_iter_key(&iter);
const bson_value_t* value = bson_iter_value(&iter);
v8::Local<v8::Value> target;
if (strncmp(key, SHM_INTERNAL_KEY, SHM_INTERNAL_KEY_LEN) == 0) {
if (value->value_type == BSON_TYPE_ARRAY) {
target = Nan::New<v8::Array>();
} else if (value->value_type == BSON_TYPE_DOCUMENT) {
target = Nan::New<v8::Object>();
} else {
return v8_value_from_bson_value(value);
if ( bson_iter_init(&iter, b) && bson_iter_next(&iter)){
const char* key = bson_iter_key(&iter);
const bson_value_t* value = bson_iter_value(&iter);
v8::Local<v8::Value> target;
if (strncmp(key, SHM_INTERNAL_KEY, SHM_INTERNAL_KEY_LEN) == 0) {
if (value->value_type == BSON_TYPE_ARRAY) {
target = Nan::New<v8::Array>();
} else if (value->value_type == BSON_TYPE_DOCUMENT) {
target = Nan::New<v8::Object>();
} else {
return v8_value_from_bson_value(value);
}
bson_iter_t child;
bson_iter_recurse(&iter, &child);
return v8_value_from_bson_iter(&child, target);
}
bson_iter_t child;
bson_iter_recurse(&iter, &child);
return v8_value_from_bson_iter(&child, target);
}
// TODO
return Nan::Undefined();
Expand Down

0 comments on commit 9d53981

Please sign in to comment.