Преобразование объекта JavaScript, который ничего не содержит в строку - PullRequest
1 голос
/ 16 марта 2012

Я пишу расширение для оболочки gnome. Расширение javascript порождает SQL-запрос и записывает вывод на стандартный вывод. В случаях, когда запрос sql оценивается в 0 кортежей / записей, мое расширение падает.

Ниже приведен фрагмент кода.

let [success, out, err, error] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
let result = out.toString(); // Crashing here for 0 tuples. I was expecting 'result = ""'

Я новичок в JavaScript. Я не понимаю, как объект out должен быть обработан в этом сценарии. Объект не является нулевым; и при этом это не определено.

typeof out == null // false
typeof out == undefined // false
typeof out == "object" // true

EDIT

typeof out == "null" // false
typeof out == "undefined" // false
typeof out == "object" // true

1 Ответ

0 голосов
/ 17 марта 2012

Я обнаружил, что смогу предотвратить сбой, если бы выполнил следующее

let [success, out, err, errno] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
if (out.length > 0) {
        let records = out.toString().split('\n\n');
}

Я не понимаю, почему out.toString() пока не может дать мне пустую строку вместо сбоя.Надеюсь, я узнаю больше о javascript и glib.

...