module.exports = {
getWeather: function (url) {
return fetch(url)
.then((resp) => {
return resp.json();
})
}
};
.get((req, res) => {
weather.getWeather( "https://api.openweathermap.org/data/2.5/weather?q=London&appid={тут ключ}" )
.then(data=>res.send(data));
})
возник ещё вопрос. Всё работает с БД на 3 пользователя. А когда пустил скрипт по "боевой" базе на 1800 пользователей - просто ничего не происходит xD жду по 5 минут, 0 вывода в консоль. :(
// расшифровывает поля из списка fields если они присутствуют в объекте data
// data - либо объект с полями, либо массив таких объектов
// fields - список полей (ключей) содержимое которых надо декодировать
function fbDecode(data, fields){
if (Array.isArray(data)) {
// если массив, то декодируем его элементы
return data.map(d=>fbDecode(d, fields);
}else if ( typeof data)) {
// если объект, то делаем его копию и в ней декодируем те его свойства, которые есть в fields
return Object.keys(data).reduce((a,k)=>{
if (fields.includes(k)) {
a[k] = iconv.decode(data[k]);
}else{
a[k] = data[k];
}
return a;
},{});
} else {
// во всех остальных случаях просто возвращаем то что в data
return data;
}
}
Firebird.attach(options, function(err, db) {
if (err)
throw err;
// далее ЛЮБОЙ ВАШ ЗАПРОС В БД, РЕЗУЛЬТАТОМ КОТОРОГО БУДЕТ ОБЪЕКТ С ДАННЫМИ ТРЕБУЮЩИМИ ДЕКОДИРОВАНИЯ ИЛИ МАССИВ ТАКИХ ОБЪЕКТОВ
// например для запроса SELECT USERNAME FROM USERS в result будет массив с объектами вида
// [
// {USERNAME: <буфер с данными>},
// {USERNAME: <буфер с данными>},
// и т.д.
// ]
// и декодировать нужно как-то так var res = fbDecode(results, ['USERNAME'] ) в результате чего в res получим что то типа
// [
// {USERNAME: 'testuser1'},
// {USERNAME: 'пользователь'},
// и т.д.
// ]
//
// а для запроса SELECT ID, USERNAME, INFO FROM USERS в result будет массив с объектами вида (это для примера, в вашей таблице USERS может и не быть полей ID и INFO)
// [
// {ID: 12345, USERNAME: <буфер с данными>, INFO: <буфер с данными>},
// {ID: 67890, USERNAME: <буфер с данными>, INFO: <буфер с данными>},
// и т.д.
// ]
// и декодировать нужно как-то так var res = fbDecode(results, ['USERNAME', 'INFO'] ) в результате чего в res получим что то типа
// [
// {USERNAME: 'testuser1', INFO: 'bla-bla-bla'},
// {USERNAME: 'пользователь', INFO: 'это Вася, он баран)))'},
// и т.д.
// ]
// соответсвенно, к декодированным данным можно будет обращаться так:
// res[0].USERNAME // testuser1
// res[1].INFO // это Вася, он баран)))
// ну или как у вас через цикл
// for (let user of res) {
// console.log(user.ID, user.USERNAME, user.INFO);
// }
db.query('SELECT USERNAME FROM USERS', function(err, results) {
const res = fbDecode(results, ['USERNAME'] )
for (let user of res) {
console.log(user.USERNAME);
}
db.detach();
});
});
Firebird.attach(options, function(err, db) {
if (err)
throw err;
db.query('SELECT USERNAME FROM USERS', function(err, result) {
const res = result.map(buf=>{
return {
buf: buf.USERNAME,
text: iconv.decode(buf.USERNAME, "win1251")
};
});
console.log(res);
db.detach();
});
});
Firebird.attach(options, function(err, db) {
if (err)
throw err;
db.query('SELECT USERNAME FROM USERS', function(err, result) {
const res = result.map(buf=>{
return {
buf: buf.USERNAME
text: iconv.decode(buf.USERNAME, "win1251");
};
});
console.log(res);
db.detach();
});
});
iconv = require('iconv-lite');
const temp = [
{codemap: "win1251", data: [0xcf, 0xee, 0xeb, 0xfc, 0xe7, 0xee, 0xe2, 0xe0, 0xf2, 0xe5, 0xeb, 0xfc] },
{codemap: "utf8", data: [0x74, 0x65, 0x73, 0x74] },
{codemap: "utf8", data: [0x74, 0x65, 0x73, 0x74, 0x33] }
];
function test(a){
let buf = Buffer.from(a.data);
if(a.codemap != "utf8"){
console.log(iconv.decode(buf, a.codemap) );
}else{
console.log(buf.toString());
}
}
temp.forEach(a=>{
test(a);
});
// на выходе:
// Пользователь
// test
// test3
Я это к тому, что нехер подставлять вторую щеку после удара по первой, за свои права надо бороться. И свой труд уважать, а думать о возможности кидалова со стороны работодателя нужно зарание, подкладывая себе соломку а работтодателю кирпичи, естественно делать это надо не нарушая закон и не роняя свою репутацию.