У меня есть код C ++, обернутый с помощью node-addon-api:
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);
}
Init:
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
? Моя идея состоит в том, чтобы поместить sysDateFormat
и isoDateFormat
в объект и вернуть его, но не уверен в синтаксисе
В настоящее время я возвращаю только строку
Обновление:
Я использовал массив для хранения обоих значений, но тип возвращаемого значения показывает ошибку времени компиляции: 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
}