Вы можете прочитать этот блог для запуска сценария оболочки из MySQL: https://patternbuffer.wordpress.com/2012/09/14/triggering-shell-script-from-mysql/
Я думаю, что для вашего требования просто напишите скрипт python / php / perl, который соединит ваш MySQL DB и запросит таблицу предупреждений о любом предупреждении и, соответственно, отобразит предупреждающее сообщение на экране или отправит предупреждение электронной почты / смс.
Вы можете создать функцию, которая принимает другую функцию в качестве параметра. И выполнить функцию в пределах try...catch
и вернуть значение, если оно существует, или вернуть значение по умолчанию в случае ошибки:
const DEFAULT_VAL = 37;
// get a function and an optional default value to override
function getAnyDepth(func, def) {
try {
return func();
} catch (e) {
return typeof def !== "undefined" ? def : DEFAULT_VAL;
}
}
var obj = { a: 45 }
console.log(getAnyDepth(() => obj.a))
console.log(getAnyDepth(() => obj.a.b.c.d.e))
console.log(getAnyDepth(() => obj.c.d.e, { b: 100 }))
Ссылка: Как избежать «Невозможно прочитать свойство« имя »из неопределенного» в JavaScript
Если вы хотите получить значение по умолчанию каждый раз, когда получаете доступ к неопределенному ключу в вашем объекте, вы делаете:
_.defaults(obj, {value: 37"})
или можете использовать стандартное сравнение:
if(typeof obj.a =='undefined'){
return 37
}
Если obj.a
равен 37, то obj.a.b
будет иметь значение 37.b
, которое не определено. Однако, если вы будете в порядке, если 37 станет результатом превращения чего-либо в примитив (например, путем конкатенации строк), тогда вы можете создать прокси.
Демо:
// Preparation
function setDefaultProperty(obj, defProp) {
return new Proxy(obj, {
get(target, prop) {
if (prop in target || typeof prop === "symbol") return target[prop];
return target[defProp];
}
});
}
var sink = setDefaultProperty({}, "_default");
sink._default = sink;
sink.valueOf = () => 37;
// Demo
var obj = {};
obj = setDefaultProperty(obj, "_default");
obj._default = sink;
console.log("" + obj.a.b.c.e); // 37
console.log("" + obj.what.ever); // 37
Невозможно вернуть число , подобное , потому что каждое вложенное свойство должно возвращать объект, если вы хотите иметь возможность неограниченно долго получать доступ к вложенным ключам - лучшее, что вы можете do возвращает объект, который может быть приведен к желаемой строке, возможно, с помощью прокси:
const handler = {
get(_, prop) {
return prop === Symbol['toPrimitive']
? () => '37'
: objProx;
}
}
const objProx = new Proxy({}, handler);
console.log('' + objProx.a); // => '37'
console.log('' + objProx.a.b); // => '37'
console.log('' + objProx.a.b.c.d.e.foobarbaz); // => '37'