Skip to content

Commit 7f105a9

Browse files
committed
PERF
1 parent 96941c3 commit 7f105a9

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/lib.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ mod auth;
77
#[macro_use]
88
extern crate napi_derive;
99

10-
use napi::bindgen_prelude::{Array, FromNapiValue};
11-
use napi::{Env, JsString, JsUnknown, Result, ValueType};
10+
use napi::bindgen_prelude::{Array, FromNapiValue, ToNapiValue};
11+
use napi::{Env, JsUnknown, Result, ValueType};
1212
use once_cell::sync::OnceCell;
1313
use std::sync::atomic::{AtomicBool, Ordering};
1414
use std::sync::Arc;
@@ -918,7 +918,8 @@ fn map_row_object(
918918
env.get_null()?.into_unknown()
919919
}
920920
} else {
921-
let mut result = env.create_object()?;
921+
let result = env.create_object()?;
922+
let result = unsafe { napi::JsObject::to_napi_value(env.raw(), result)? };
922923
// If not plucking, get all columns
923924
for idx in 0..column_count {
924925
let value = match row.get_value(idx as i32) {
@@ -928,8 +929,17 @@ fn map_row_object(
928929

929930
let column_name = column_names[idx].as_str();
930931
let js_value = convert_value_to_js(env, &value, safe_ints)?;
931-
result.set_named_property(column_name, js_value)?;
932+
let column_name = std::ffi::CString::new(column_name).unwrap();
933+
unsafe {
934+
napi::sys::napi_set_named_property(
935+
env.raw(),
936+
result,
937+
column_name.as_ptr(),
938+
napi::JsUnknown::to_napi_value(env.raw(), js_value)?,
939+
);
940+
}
932941
}
942+
let result: napi::JsObject = unsafe { napi::JsObject::from_napi_value(env.raw(), result)? };
933943
result.into_unknown()
934944
};
935945
Ok(result)

0 commit comments

Comments
 (0)