c++ - 如何将对象从c导出到node addon api

标签 c++ node.js node-addon-api

我使用 node-addon-api 封装了 C++ 代码:

Napi::String Method(const Napi::CallbackInfo &info)
{
  Napi::Env env = info.Env();
  time_t rawtime;
  struct tm *timeinfo;
  char system_date_buffer[80];
  char iso_date_buffer[80];

  time(&rawtime);
  timeinfo = localtime(&rawtime);

  setlocale(LC_ALL, "");
  strftime(system_date_buffer, 80, "%x", timeinfo);
  string sysDateFormat(system_date_buffer);
  strftime(iso_date_buffer, 80, "%%Y-%m-%d", timeinfo);
  string isoDateFormat(iso_date_buffer);
  return Napi::String::New(env, sysDateFormat);
}

初始化:

Napi::Object Init(Napi::Env env, Napi::Object exports)
{
  exports.Set(Napi::String::New(env, "sysDateFormat"), Napi::Function::New(env, Method));
  exports.Set(Napi::String::New(env, "isoDateFormat"), Napi::Function::New(env, Method));
  return exports;
}

如何返回不同的值或导出对象?以上我只返回

返回 Napi::String::New(env, sysDateFormat);

我如何返回isoDateFormat?我的想法是将 sysDateFormat 和 isoDateFormat 放入对象并返回它但不确定语法

目前我只返回字符串

更新:

我使用数组来存储这两个值,但返回类型显示编译时错误:没有重载函数“Napi::Array::New”的实例与参数列表匹配 - 参数类型为:(Napi: :Env, std::string [2])

Napi::Array Method(const Napi::CallbackInfo &info)
{
  Napi::Env env = info.Env();
  time_t rawtime;
  struct tm *timeinfo;
  char system_date_buffer[80];
  char iso_date_buffer[80];
  string dateArray [2];

  time(&rawtime);
  timeinfo = localtime(&rawtime);

  setlocale(LC_ALL, "");
  strftime(system_date_buffer, 80, "%x", timeinfo);
  string sysDateFormat(system_date_buffer);
  strftime(iso_date_buffer, 80, "%%Y-%m-%d", timeinfo);
  string isoDateFormat(iso_date_buffer);
  dateArray[0] = sysDateFormat;
  dateArray[1] = iso_date_buffer;
  return Napi::Array::New(env, dateArray); // error here
}

最佳答案

使用 Napi api 中的对象类型有效!

 Napi::Object obj = Napi::Object::New(env);
  obj.Set(Napi::String::New(env, "sysDateFormat"), sysDateFormat);
  obj.Set(Napi::String::New(env, "isoDateFormat"), isoDateFormat);

关于c++ - 如何将对象从c导出到node addon api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634592/

相关文章:

node.js - Node.js插件和wasm之间的比较

c++ - 是否可以使用私有(private) js 构造函数在 node-addon-api 中创建一个 ObjectWrap,并且只能在 C++ 中实例化?

c++ - 从 pair 到 Vector2f 的转换导致超出范围错误

c++ - 我可以创建一个 C++ "zap"函数来处理一个指针,如果它没有分配内存吗?

c++ - 在指定元素前插入节点

node.js - 我的 Node.js 网站的开发构建

c++ - 从shared_ptr获取原始指针并将其传递给需要原始指针的函数

c++ - 迷宫求解器的复杂性

node.js - 如何打印出 sequelize 实例的表名?

javascript - 如何使用聚合在 mongodb 中基于子字段查找父项?