1

我有使用 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;
}

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

return Napi::String::New(env, sysDateFormat);

我也如何返回isoDateFormat?我的想法是放入对象sysDateFormatisoDateFormat返回它但不确定语法

目前我只返回字符串

更新:

我使用数组来存储这两个值,但返回类型显示编译时错误:no instance of overloaded function "Napi::Array::New" matches the argument list -- argument types are: (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
}
4

1 回答 1

2

使用 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);
于 2020-05-06T12:45:02.977 回答