JSEval
Oxirgi yangilanishda o‘zingizning kodingizni ishlab chiqish, qo‘llab-quvvatlash va sinab ko‘rishga yordam beradigan yangi redaktor qo‘shdik. Redaktor VS Code da faol foydalaniladigan, Microsoft ning progressiv redaktoridagi MonacoEditor bazasida ishlaydi va ushbu redaktorda qo‘llab-quvvatlanadigan barcha funksionallar va instrumentlardan foydalanish imkonini beradi. Shuningdek, yangi ishlab chiqish muhitiga ES6/7/8(https://www.codingame.com/playgrounds/3629/5-features-of-es-6-7-8-that-supercharge-your-javascript) versiyalari sintaksisini qo‘llab-quvvatlash, kodni testdan o‘tkazish va sozlash uchun qulay konsol qo‘shilgan.
Shaklning tayanch (bazoviy) elementi ikki qismga bo‘lingan:
Kodni ko‘rish – bu blokda redaktorda yozilgan kodingizning bir qismi ko‘rinadi Redaktorni chaqirish uchun faol tugma
Shaklning (formaning) asosiy elementi Redaktorning interfeysining o‘zi 3 ta panelga bo‘lingan ish maydonidan iborat. Yuqori chap panelda (1) kod redaktori joylashgan, uning o‘ng tomonida test uchun redaktor (4) va oynaning pastki qismidagi konsol (7) joylashgan.

Redaktor interfeysi Kod redaktori - VS Code ning asosiy (bazoviy) funksionalini qo‘llab-quvvatlaydi. Saqlash [Ctrl+S] - redaktordagi ma’lumotlarni shaklda (formada) saqlaydi. Saqlash va chiqish - redaktordagi ma’lumotlarni shaklda (formada) saqlaydi va ishlab chiqish muhitini yopadi. Testlar redaktori – kodga testlar yozish oynasi. Testlarni ishga tushirish [Alt+Enter] – testlarni ishga tushiradi va uning natijalarini konsolga chiqaradi. Chiqish [Esc] – ishchi oynani yopadi. Konsol - xatolar haqidagi xizmat xabarlarni, interfeys loglaridagi Console (log, warning, error) va testlarni bajarish natijalarini ko‘rsatish oynasi. Konsolni tozalash [Ctrl+L] - konsoldagi ma’lumotlarni tozalaydi.
Variables
- requestParams
- userParams
- variables.{satageName}
JSON
JS Evalda mavjud eng muhim imkoniyatlardan biri bu API so'rovdan kelgan manbaalarni ustida JSON metodlari orqali ishlashdir. Misol uchun API so'rovdan kelgan "string" ma'lumotlarni JavaScript obyektiga o'tkazish, yoki API so'rovdan kelgan "obyekt" ma'lumotlarni "string" ko'rinishiga o'girish vazifalari bajariladi.
parse(): Bu serverdan parametr sifatida JSON ma'lumotini oladi va JavaScript obyektini qaytaradi.
const txt = '{"name":"John", "age":30, "city":"New York"}'
const obj = JSON.parse(txt);
// va biz "obj" o'zgaruvchanini ushbu ko'rinishda olamiz:
// obj = {
// age: 30,
// city: "New York",
// name: "John"
// }stringify(): Bu parametr sifatida "obyektni" oladi va ekvivalent JSON stringini serverga jo'natish uchun tayyor holda qaytaradi.
const obj = {
age: 35,
city: "New Orlean",
name: "Samwell"
}
const str = JSON.stringify(obj);
// va biz "str" o'zgaruvchini JSON shaklida serverga jo'natish uchun ushbu ko'rinishda olamiz:
// {"name":"John","age":30,"city":"New York"}CONSOLE
JS Evalda biz consolening eng asosiy va eng ko'p ishlatiladigan metodlarini biriktirganmiz. Kod ishlashini kuzatish, natijalarni ko'rish va error xatoliklarni aniqlash uchun JS Eval consolidan foydalanilsa bo'ladi.
Rasmda ko'rsatilganidek, console JS Eval editorining pastgi qismida joylashgan va 2 ta tugmadan iborat:
- "Console"ga o'tish tugmasi - 1
- "Console"ni tozalash tugmasi - 2

Keling mavjud console metodlar bilan birin ketin tanishib chiqamiz:
console.log()- xabarni oladi va natijani consolga chiqaradi. Shuningdek, u JavaScript obyektlarini, massivlarni - JavaScript-dagi barcha ma'lumotlar turlarini chiqarishi mumkin. Bundan tashqari, u chiqazilayotgan xabarlar ko'rinishini tushunarli tarzga keltirib beradi.
console.log("Hello World"); // String
console.log({name: "Sam Simon", age: 43,}); // Object
console.log(["Apple", "Banana", "Orange"]); // Array
console.error()- console.log() buyrug'i barcha ma'lumotlarni chiqazuvchi buyruq bo'lishini ko'rib chiqdik, shundan kelib chiqib aytish mumkinki console.error() ham console.log() buyrug'iga juda o'xshash bo'lib xatoliklarni o' zinigina chiqazib beradi.
console.error("Something is wrong");
console.error("Xatolikni o'zingiz hohlaganday xabar bilan chiqarish");
console.warn()- ushbu console buyrug'i ham huddi console.log() buyrug'iga o'xshash bo'lib eslatma va tafsiyalarni chiqarish uchun ko'pincha ishlatilinadi. Shuningdek, warn() buyrug'i xatosiz ammo noto'g'ri yozilgan kodlarni belgilash uchun ham ishlatiladi.
console.warn("Some warning");
console.warn("Ushbu bo'limda o'zingiz hohlagan eslatma habarlarni chiqarishingiz mumkin");
THROWS
JSEval functionni bo`lib kutilgan errorlarni http status orqali throw otish uchun kerak bo'ladi. Misol uchun JsEval orqali requestParamdan kirib kelgan qiymatlarni validatsiya qilish mumkin.
const _name = requestParams.name; // required type: varchar
const category_id = requestParams.category_id; // required type: bigint
const main_photo = requestParams.main_photo; // required type: varchar
const description = requestParams.description; // required type: varchar
if (!_name) throws.responseException('BAD_REQUEST', 'name is required')
if (typeof _name != 'string') throws.responseException('BAD_REQUEST', 'name must be string')
if (_name.length > 255) throws.responseException('PAYLOAD_TOO_LARGE', 'name limit is 255')
if (!category_id) throws.responseException('BAD_REQUEST', 'category_id is required')
if (typeof category_id != 'number') throws.responseException('BAD_REQUEST', 'category_id must be number')
if (category_id < 0) throws.responseException('PAYLOAD_TOO_LARGE', 'category_id must be positive number')
if (!main_photo) throws.responseException('BAD_REQUEST', 'main_photo is required')
if (typeof main_photo != 'string') throws.responseException('BAD_REQUEST', 'main_photo must be string')
if (main_photo.length > 255) throws.responseException('PAYLOAD_TOO_LARGE', 'main_photo limit is 255')
if (typeof description != 'string') throws.responseException('BAD_REQUEST', 'description must be string')
if (description.length > 255) throws.responseException('PAYLOAD_TOO_LARGE', 'description limit is 255')throws.responseException(HTTP STATUS,TROWS MESSAGE)- HTTP STATUS- http statuslari
- TROWS MESSAGE - biz qaytarmoqchi bo`lgan istalgan yozuv text.
HTTP STATUSLAR
CONTINUE(100, "Continue"),
// Hamma so'rovlar joyida ekanligi va davom ettirish mumkinligini bildirib turuvchi kod
SWITCHING_PROTOCOLS(101, "Switching Protocols"),
// Ushbu kod Upgrade: sarlavhasini mavjud so'roviga yuboriladi va server sarlavhada ko'rsatilgan protokolga o'tganligini bildiradi.
PROCESSING(102, "Processing"),
// "Ish olib borilmoqda". Ushbu kod server so'rovni qabul qilganligini va uni ustida ishlash hali tugallanmaganligini bildiradi.
CHECKPOINT(103, "Checkpoint"),
//
OK(200, "OK"),
// "Muvaffaqiyatli". So‘rov muvaffaqiyatli bajarildi.
CREATED(201, "Created"),
// "Yaratildi". So‘rov muvaffaqiyatli bajarildi va natijada resurs yaratildi. Ushbu kod odatda PUT so'roviga javob sifatida yuboriladi.
ACCEPTED(202, "Accepted"),
// "Qabul qildi". So'rov qabul qilindi, lekin hali ko'rib chiqilmagan holatda keluvchi kod.
NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"),
// "Ma'lumotlar ishonchli emas." Bu kod qaytarilgan ma'lumot asl server tomonidan emas, balki boshqa manbadan olinganligini bildiradi.
NO_CONTENT(204, "No Content"),
// "Kontent mavjud emas." So'rovga javob beradigan kontent yo'q, ammo foydali bo'lishi mumkin bo'lgan javob sarlavhalari yuboriladi.
RESET_CONTENT(205, "Reset Content"),
// "Kontentni qayta yuklash". Ushbu kod so'rov yuborilgan hujjatning ko'rinishini qayta yuklash kerakligini bildirish uchun yuboriladi.
PARTIAL_CONTENT(206, "Partial Content"),
// "Qismlarga bo'lingan tuzilish". Ushbu kod bir nechta qismlarda yuklab olish uchun mo'ljallangan so'rovlarda ishlatiladi.
MULTI_STATUS(207, "Multi-Status"),
// Ushbu kod bir nechta mustaqil jarayonlarning holatini ta'minlaydi
ALREADY_REPORTED(208, "Already Reported"),
//
IM_USED(226, "IM Used"),
//
MULTIPLE_CHOICES(300, "Multiple Choices"),
// "Tanlov ko'pligi". Ushbu kod so'rovda bir nechta javoblar mavjud bo'lganda yuboriladi. Va user-agent yoki foydalanuvchi javoblardan birini tanlashi kerakligini bildiradi.
MOVED_PERMANENTLY(301, "Moved Permanently"),
// "To'liq ko'chirilgan." Ushbu kod so'ralgan manbaning "URI"si o'zgartirilganligini bildiradi.
FOUND(302, "Found"),
// "Topildi". Ushbu kod so'ralgan manba topilgan va unga vaqtinchalik o'zgartirilganligini bildiradi..
MOVED_TEMPORARILY(302, "Moved Temporarily"),
//
SEE_OTHER(303, "See Other"),
// "Boshqa manbalarni ko'rish". Ushbu kod mijozni GET so'rovi bilan boshqa URIdan man'lumotni olishga yo'naltirish uchun yuboriladi.
NOT_MODIFIED(304, "Not Modified"),
//
USE_PROXY(305, "Use Proxy"),
//
TEMPORARY_REDIRECT(307, "Temporary Redirect"),
//
PERMANENT_REDIRECT(308, "Permanent Redirect"),
//
BAD_REQUEST(400, "Bad Request"),
//
UNAUTHORIZED(401, "Unauthorized"),
//
PAYMENT_REQUIRED(402, "Payment Required"),
//
FORBIDDEN(403, "Forbidden"),
//
NOT_FOUND(404, "Not Found"),
//
METHOD_NOT_ALLOWED(405, "Method Not Allowed"),
//
NOT_ACCEPTABLE(406, "Not Acceptable"),
//
PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"),
//
REQUEST_TIMEOUT(408, "Request Timeout"),
//
CONFLICT(409, "Conflict"),
//
GONE(410, "Gone"),
//
LENGTH_REQUIRED(411, "Length Required"),
//
PRECONDITION_FAILED(412, "Precondition Failed"),
//
PAYLOAD_TOO_LARGE(413, "Payload Too Large"),
//
REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
//
URI_TOO_LONG(414, "URI Too Long"),
//
REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"),
//
UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
//
REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested range not satisfiable"),
//
EXPECTATION_FAILED(417, "Expectation Failed"),
//
I_AM_A_TEAPOT(418, "I'm a teapot"),
//
INSUFFICIENT_SPACE_ON_RESOURCE(419, "Insufficient Space On Resource"),
//
METHOD_FAILURE(420, "Method Failure"),
//
DESTINATION_LOCKED(421, "Destination Locked"),
//
UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"),
//
LOCKED(423, "Locked"),
//
FAILED_DEPENDENCY(424, "Failed Dependency"),
//
TOO_EARLY(425, "Too Early"),
//
UPGRADE_REQUIRED(426, "Upgrade Required"),
//
PRECONDITION_REQUIRED(428, "Precondition Required"),
//
TOO_MANY_REQUESTS(429, "Too Many Requests"),
//
REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"),
//
UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"),
//
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
//
NOT_IMPLEMENTED(501, "Not Implemented"),
//
BAD_GATEWAY(502, "Bad Gateway"),
//
SERVICE_UNAVAILABLE(503, "Service Unavailable"),
//
GATEWAY_TIMEOUT(504, "Gateway Timeout"),
//
HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version not supported"),
//
VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"),
//
INSUFFICIENT_STORAGE(507, "Insufficient Storage"),
//
LOOP_DETECTED(508, "Loop Detected"),
//
BANDWIDTH_LIMIT_EXCEEDED(509, "Bandwidth Limit Exceeded"),
//
NOT_EXTENDED(510, "Not Extended"),
//
NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required");HTTP
Bu function JsEval ichida apilar bilan ishlash imkoniyatini beradi.
Qo'shimcha
APIga murojaatlarning quyidagi turlari mavjud. Unga murojaat quyidagicha amalga oshiriladi:
- http.get(...)
- http.post(...)
- http.put(...)
- http.patch(...)
- http.delete(...)
GETmetod uchun:
http.get(url,header,errorCallback)
// buyerda url require qolgan o`garuvchilar mazburiy emas
let data = http.get('https://example.com/test')
console.log('data', data)
let data = http.get('https://example.com/test', {'Authorization': 'Basic dGVzdDp0ZXN0'})
console.log('data',data)
let data = http.get('https://example.com/test', {'Authorization': 'Basic dGVzdDp0ZXN0'}, function(e,s){
throws.responseException('FORBIDDEN', 'Some text');
}
console.log('data',data)DELETEmetod uchun:
http.delete(url,header,errorCallback)
// buyerda url require qolgan o`garuvchilar mazburiy emas
let data = http.delete('https://example.com/test')
console.log('data', data)
let data = http.delete('https://example.com/test', {'Authorization': 'Basic dGVzdDp0ZXN0'})
console.log('data',data)
let data = http.delete('https://example.com/test', {'Authorization': 'Basic dGVzdDp0ZXN0'}, function(e,s){
throws.responseException('FORBIDDEN', 'Some text');
}
console.log('data',data)POSTPUTPATHmetod uchun:
http.post(url, data, header, errorCallback)
// buyerda url require qolgan o`garuvchilar mazburiy emas
let data = http.post('https://example.com/test')
console.log('data', data)
let data = http.post('https://example.com/test', {'Authorization': 'Basic dGVzdDp0ZXN0'})
console.log('data', data)
let data = http.post('https://example.com/test', {'data': {}}, {'Authorization': 'Basic dGVzdDp0ZXN0'})
console.log('data', data)
let data = http.post('https://example.com/test', {'data': {}}, {'Authorization': 'Basic dGVzdDp0ZXN0'}, function (e, s) {
throws.responseException('FORBIDDEN', 'Some text');
}
console.log('data', data)UTIL
JsEvalning 'util' qismida dasturchilar uchun turli xildagi utilitalar va ehtiyoj katta bo'lgan instrumental funksionallari kiritilgan, ulardan biri Base64-decode-encode. Base64 - bu binary-to-text encoding sxemalari guruhi bo'lib, ular ikkilik ma'lumotlarni (Binary malumotlar) ASCII formatida radix-64 ko'rinishiga aylantirish orqali ifodalaydi. Base64 atamasi "a specific MIME content transfer encoding"dan kelib chiqqan.
Platon APIning JsEval bosqichida ham ushbu imkoniyat kiritilgan bo'lib, ma'lumotlarning base64 ko'rinishini olishingiz va aksincha, kontentning base64 yig'inini qayta ma'lumotlarga o'girishingiz mumkin.
*Utils"dagi mavjud buyruqlar:
util.decodeBase64(): berilgan textni base64 formatga o`tkazadi;
let text = "Utilsdagi mavjud buyruqlar"
let base64Text = util.decodeBase64(text)
return base64Text
// VXRpbHNkYWdpIG1hdmp1ZCBidXlydXFsYXI=util.encodeBase64(): base64 formatdagi textni encode qiladi:
let base64Text = "VXRpbHNkYWdpIG1hdmp1ZCBidXlydXFsYXI="
let text = util.encodeBase64(base64Text)
return text
// Utilsdagi mavjud buyruqlarutil.decodeJwt(): jwt decode qilish uchun ishlatiladi:
let jwt = 'eyJraWQiOiJmNTJhMjA3My1iNzIyLTRkZjAtYTlkNi1mNWY5NTk3MTBkNmMiLCJhbGciOiJSUzI1NiJ9.eyJ1cGRhdGVfaWQiOjgsInN1YiI6IjVmZTUwZDI4LTljNWUtNGViNC1iOTQ4LTE0NTE1ZmQ2ZTEzYiIsInJvbGVzIjoiIiwiaXNzIjoiIiwidHlwZSI6IkJlYXJlciIsImxvY2FsZSI6InV6Iiwic2lkIjoiYmVjYTNjMTktZDI1Mi00YTc5LWIzMTMtZGI3NjA5NGRhN2U4IiwiYXVkIjoiYWNjb3VudCIsImZ1bGxfbmFtZSI6IiIsImV4cCI6MTc2NzY5ODg5OCwic2Vzc2lvbl9zdGF0ZSI6IlNUQVRFTEVTUyIsImlhdCI6MTc2NzY4MDg5OCwianRpIjoiZWM4NjQ0ZDItMDhlYS00OGVhLTk3Y2MtZmYwMDAyNTVkNjlmIiwidXNlcm5hbWUiOiJyb290In0.EMFiFvJ6eTDTNlGVWfuv9rvGDaYFBjPenQKQhMjJTw6vEhk8OcCVOcYP32yfGu83ARgMxPWqIWbunsXBW8FWWeh0aM0qQ9GjxysD9qDC26FR-PtGw8Uggkro2RSQwjUD_WGXKwtkNKRk3G-E4ENDDiDSG2fuQM3SWcwwDRhwRDlYT22uWM1hG-JQlkW1PGAmPGmvEAzcaPS3dbn_J6jqFVBG9VrqcoA_d3r_AMm5Sq_PmF3R05Lqgm1H33rhf5lTZ-22JqfzdG1uZ3sNCIxBDzOZQANhmbICKbNgWCr2eyd-S20BFvDhIvPgbBIeezViHtxJ70kqdmW1Yi4wOCQfrg'
let data = util.decodeJwt(jwt)
return data
// "data": {
// "signature": "EMFiFvJ6eTDTNlGVWfuv9rvGDaYFBjPenQKQhMjJTw6vEhk8OcCVOcYP32yfGu83ARgMxPWqIWbunsXBW8FWWeh0aM0qQ9GjxysD9qDC26FR-PtGw8Uggkro2RSQwjUD_WGXKwtkNKRk3G-E4ENDDiDSG2fuQM3SWcwwDRhwRDlYT22uWM1hG-JQlkW1PGAmPGmvEAzcaPS3dbn_J6jqFVBG9VrqcoA_d3r_AMm5Sq_PmF3R05Lqgm1H33rhf5lTZ-22JqfzdG1uZ3sNCIxBDzOZQANhmbICKbNgWCr2eyd-S20BFvDhIvPgbBIeezViHtxJ70kqdmW1Yi4wOCQfrg",
// "header": {
// "kid": "f52a2073-b722-4df0-a9d6-f5f959710d6c",
// "alg": "RS256"
// },
// "body": {
// "update_id": 8,
// "sub": "5fe50d28-9c5e-4eb4-b948-14515fd6e13b",
// "roles": "",
// "iss": "",
// "type": "Bearer",
// "locale": "uz",
// "sid": "beca3c19-d252-4a79-b313-db76094da7e8",
// "aud": "account",
// "full_name": "",
// "exp": 1767698898,
// "session_state": "STATELESS",
// "iat": 1767680898,
// "jti": "ec8644d2-08ea-48ea-97cc-ff000255d69f",
// "username": "root"
// }JDBS
Java ma'lumotlar bazasiga ulanish (JDBC) bu Java dasturlariga ma'lumotlar bazasini boshqarish tizimlariga kirish imkonini beruvchi standart amaliy dasturlash interfeysi.
Ushbu standart interfeys va sinflardan foydalanib, dasturchilar ma'lumotlar bazalariga ulanadigan ilovalarni yozishlari mumkin bo'ladi.
- "JDBC" dagi mavjud buyruqlar:
jdbc.query(sql,args): berilgan queryni bazaga execute qiladi:
let sql = `
select id, name1 as name
from lists
where type_id = :typeId
and state = :state
and id = :id
`
//{typeId: 1, state: 1, id: 6} sql parametrlari
let data = jdbc.query(sql, {typeId: 1, state: 1, id: 6})
return data
//"data": {
// "id": 6,
// "name": "Бухоро"
// }let typeId = 1
let state = 1
let id = 6
let sql = `
select id, name1 as name
from lists
where type_id = ${typeId}
and state = ${state}
and id = ${id}
`
let data = jdbc.query(sql, {})
return dataQo'shimcha
jdbc.query()dan faqat object qaytadi;
jdbc.execute(): buni ham ishlash prinspijdbc.query()kabi farqi bundan qiymat qaytmaydi;jdbc.execute()ko`pincha update , delete va insert methodlari uchun tavsiya etladi;
let sql = `
update lists
set state = 1
where type_id = :typeId
and id = :id
`
//{typeId: 1, id: 6} sql parametrlari
jdbc.execute(sql, {typeId: 1, id: 6})
return "success"let typeId = 1
let state = 1
let id = 6
let sql = `
update lists
set state = 1
where type_id = ${typeId}
and id = ${id}
`
jdbc.execute(sql, {})
// yoki
jdbc.execute(sql) // argument yoq bo`lsa berish majburiy emas
return "success"jdbc.queryForMap(): bu hamjdbc.query()bilan bir xil ishlaydi. Farqi querydan so'ng args(parametr) berish shart emas;
let sql = `
select id, name1 as name
from lists
where type_id = :typeId
and state = :state
and id = :id
`
//{typeId: 1, state: 1, id: 6} sql parametrlari
let data = jdbc.queryForMap(sql, {typeId: 1, state: 1, id: 6})
return data
//"data": {
// "id": 6,
// "name": "Бухоро"
// }let typeId = 1
let state = 1
let id = 6
let sql = `
select id, name1 as name
from lists
where type_id = ${typeId}
and state = ${state}
and id = ${id}
`
let data = jdbc.queryForMap(sql, {})
//yoki
let data = jdbc.queryForMap(sql) // argument yoq bo`lsa berish majburiy emas
return dataQo'shimcha
jdbc.queryForMap()dan faqat object qaytadi;
jdbc.queryForJsonMap():jdbc.queryForMapbilan ishlash jihatdan bir xil faqat natijasi json ko`rinishida qaytadi;
let typeId = 1
let state = 1
let id = 6
let sql = `
select id, name1 as name , json_build_object('id',1,'name',2) as child
from lists
where type_id = ${typeId}
and state = ${state}
and id = ${id}
`
let data = jdbc.queryForJsonMap(sql)
return data//bu queryForMap dan qaytgan javob;
"data": {
"id": 6,
"name": "Бухоро",
"child": {
"type": "json",
"value": "{\"id\" : 1, \"name\" : 2}",
"null": false
}
}//bu queryForJsonMap dan qaytgan javob;
"data": {
"id": 6,
"name": "Бухоро",
"child": {
"id": 1,
"name": 2
}
},jdbc.queryForList: bu function boshqalardan farqi buLISTqaytaradi;
let typeId = 1
let state = 1
let sql = `
select id, name1 as name , json_build_object('id',1,'name',2) as child
from lists
where type_id = ${typeId}
and state = ${state}
`
let data = jdbc.queryForList(sql)
return datayoki argumentlarni obyect qilib berish ham mumkin
let sql = `
select id, name1 as name
from lists
where type_id = :typeId
and state = :state
`
//{typeId: 1, state: 1} sql parametrlari
let data = jdbc.queryForList(sql, {typeId: 1, state: 1})
return data- natijasi:
"data": [
{
"id": 0,
"name": "Республика",
"child": {
"type": "json",
"value": "{\"id\" : 1, \"name\" : 2}",
"null": false
}
},
{
"id": 3,
"name": "Андижон",
"child": {
"type": "json",
"value": "{\"id\" : 1, \"name\" : 2}",
"null": false
}
},
...
]jdbc.queryForJsonList:jdbc.queryForListbilan ishlashi bir xil farqi bunda ham qaytadigan javobJSONga cast qilib qaytariladi;
let typeId = 1
let state = 1
let sql = `
select id, name1 as name , json_build_object('id',1,'name',2) as child
from lists
where type_id = ${typeId}
and state = ${state}
`
let data = jdbc.queryForJsonList(sql)
return datayoki argumentlarni obyect qilib berish ham mumkin
let sql = `
select id, name1 as name
from lists
where type_id = :typeId
and state = :state
`
//{typeId: 1, state: 1} sql parametrlari
let data = jdbc.queryForJsonList(sql, {typeId: 1, state: 1})
return data- natijasi:
"data": [
{
"id": 0,
"name": "Республика",
"child": {
"id": 1,
"name": 2
}
},
{
"id": 3,
"name": "Андижон",
"child": {
"id": 1,
"name": 2
}
},
{
"id": 8,
"name": "Жиззах",
"child": {
"id": 1,
"name": 2
}
},
...
]REDIS
Redis qisqartmasi masofaviy lug'at serveri degan ma'noni anglatadi. Redis nima uchun ishlatiladi? Redis - bu tizim xotirasida saqlangan ma'lumotlarga xizmat ko'rsatishda ish faoliyatini yaxshilash uchun NoSQL ma'lumotlar bazasi yoki xotira-kesh do'koni sifatida ishlay oladigan rivojlangan kalit-qiymat do'koni.
- "Redis" dagi mavjud buyruqlar:
redis.publicSet(): redisga ma`lumot saqlash uchun ishlatiladi;
//redis.publicSet('key','value',time to live(millisecond))
let key = redis.publicSet('key','value',10000)
//yoki
let key = redis.publicSet('key','value') //TTL berish majburiy emas
return keyredis.publicClear():
let key = redis.publicClear('key')
return keyredis.publicGet():
let key = redis.publicGet('key','value',10000)
return keyFILE
Bu functions orqali jsEvalda file yuklash va load qilishda foydalaniladi
- functions:
fs.loadFileBase64(): bu orqali bazaga saqlangan fileni base64 formatda olishimiz mumkin;
let fs = require('files');
let fileBase64 = fs.loadFileBase64(fileID);
return fileBase64fs.saveFileBase64(): Base64 formatfagi fileni saqlash
let fs = require('files');
let file_id = fs.saveFileBase64(
requestParams.photo.fileBase64, // Base64 text
requestParams.photo.contentType, // fileType misol uchun application/pdf
requestParams.photo.fileName, // shu file name
"file_category" // file_category name Fayl kategoriyalari menusidan olinadi
);
return file_idJWT
Bu functions orqali jwt generatsiya qilish mumkin; 
let jwt = require('jwt')
// !!! PAYLOAD REQUIRED
let result = jwt.generateToken(payload) // shunchaki data
// yoki
let result = jwt.generateToken(payload, header) // data va header berish kerak
// yoki
let result = jwt.generateToken(payload, header, signature) // data, header va signature berish kerak
// yoku
let result = jwt.generateToken(signature, payload) // signature va data bu yerda head shart emas
return result;Qo'shimcha
Qiymatlar berilmagan holatlarda project configadan olinadi qiymatlar. Faqat Payload berish majburiy;
UserActions
- Functionlari :
userActions.refreshUser(UserId): berilgan userni ma`lumotlarini cachedan yangilaydi;userActions.hasPermission(permission,userId): berilgan permission berilgan userIDda bor yoki yoq ekanini tekshiradi;userActions.loadToken(login,password): berilgan login password orqali Bearer JWT token generatsiya qiladi;userActions.loadToken(login,password,isAlwaysCheckPassword): parol o'zgaridagan holatlardaisAlwaysCheckPasswordtrue qilib qo'yish kerak;userActions.databaseConnection(): databaseControl tomonidan yaratilgan databaselarni shu yo`l orqali ishlatish mumkin:
let db = userActions.databaseConnection({"name":"auth"});
let data = variables.hash_password;
let sql = `update pa_auth_users
set password = '${data.password}',
updated_at = now()
where id = '${data.user_id}'
and state = 1
returning id;
`
let exist = db.queryForMap(sql)
userActions.refreshUser(data.user_id)
return exist