[英]Reading N-API object into C++ primitive
我從 generator-napi-module 的 ObjectWrap 樣板開始創建了一個簡單的 N-API 模塊,並成功地將數據(包含具有字符串、數字和 boolean 屬性的對象的數組)傳遞給 JS。 但是,我無法解析傳遞回本機代碼的同一對象之一的屬性; 具體來說,根據傳遞的 object 的屬性(數字)創建uint32_t
值。
假設創建了一個對象數組並將其傳遞給 JS:
Napi::Value ObjectWrapAddon::GetSomeList(const Napi::CallbackInfo& info){
Napi::Env env = info.Env();
native_struct_one *data = NULL;
native_struct_two opts = { TRUE,FALSE,FALSE };
int retVal = native_lib_method(&data, &opts);
if(retVal!=OK) {
return Napi::Array::New(env); // return empty array
}
Napi::Array arr = Napi::Array::New(env);
uint32_t i = 0;
do {
Napi::Object tempObj = Napi::Object::New(env);
tempObj.Set("someProp", data->someVal);
arr[i] = tempObj;
i++;
data = data->next;
} while(data);
return arr;
}
然后將這些對象之一傳遞給本機 function 調用:
Napi::Value ObjectWrapAddon::OtherMethod(const Napi::CallbackInfo& info){
Napi::Env env = info.Env();
Napi::Object obj = info[0].As<Napi::Object>();
uint32_t temp = obj.Get("someProp").As<Napi::Number>();
return Napi::Number::New(env, temp);
}
這構建得很好,但是上面的 OtherMethod() 在uint32_t temp = obj.Get('someProp').As<Napi::Number>()
處給出了一個A number was expected
錯誤。
如何從 JS object 屬性值創建本機 (C++) 值?
我錯過了兩件事,這讓它起作用:
uint32_t temp = obj.Get("someProp").As<Napi::Number>().Uint32Value();
修復這些問題提供了預期的行為和 output。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.