(function ()
{
'use strict';
if (!confirm('Удалить все лайки?')) return;
var deleteLikeLink = document.body.querySelectorAll('.like_button_icon');
setTimeout(()=>{
for (var i = 0; i < deleteLikeLink.length; i++)
{
deleteLikeLink[i].click();
}
}, 1000);
alert(deleteLikeLink.length + ' likes deleted');
}());
var request = require("request");
// создаем класс для кэширования результатов запросов
class СacheRequest {
// конструктор
constructor(handler){
// создаем ассоциативный массив для кэширования результата
this.cache = {};
}
// основной метод класса, предназначен для получения данных по ссылке
// принимает url в качестве параметра
// возвращает выполненный промис если запрос есть в кэше
// или промис в ожидании выполнения запроса
async get(url){
// если такой запрос уже был, возвращаем промис с результатом из кэша
if( this.cache[url] )
return Promise.resolve(this.cache[url]);
// иначе возвращаем промис с ожиданием результата
return new Promise((resolve,reject)=>{
// делаем запрос на указаный url
request(url, (error, response, body)=>{
// если ошибка - реджектим )
if( error )
return reject(error);
// иначе запоминаем в кэше ответ
this.cache[url] = body;
// и резолвим body
resolve(body);
});
});
}
// метод отчищает кэш
clear(){
this.cache = {};
}
}
// создаем экземпляр кэша
const cacheRequest = new СacheRequest();
// так как request асинхронный, то для того, чтобы получить
// результат запроса в "синхронном стиле" используем await
// await можно использовать только внутри асинхронной функции.
// для этой цели обернем блок с вызовами cacheRequest.get в
// само вызывающуюся асинхронную функцию
(async () => {
// выполняем запросы:
// запросим "http://google.ru/" (будет сделан фактический запрос)
let body = await cacheRequest.get("http://google.ru/");
console.log("\n\n\nBODY:", body, 111);
// еще раз запросим "http://google.ru/" (будет взято из кэша)
body = await cacheRequest.get("http://google.ru/");
console.log("\n\n\nBODY:", body, 222);
})()
// раз в сутки отчищаем кэш
setTimeout(()=>{
cacheRequest.clear();
}, 1000*60*60*24 ); // 1000*60*60*24 это количество миллисекунд в сутках
let u = document.querySelector('.u-p');
let u = document.querySelectorAll('.u-p');
this[i].onclick = function() {
u[i].onclick = function() {
u.style.color = 'red';
u[i].style.color = 'red';
let u = document.querySelectorAll('.u-p');
for (let i = 0; i < u.length; i++) {
u[i].onclick = function() {
u[i].style.color = 'red';
}
}
var i = 0;
while (i < 10) {
i += 1;
console.log(i)
}
var i = 0;
while (i < 10) {
console.log(i)
i += 1;
}
<input type="file" id="myFileField" name="myFile" />
var formData = new FormData();
formData.append("myFile", document.getElementById("myFileField").files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", "myServletUrl");
xhr.send(formData);
// Это базовый пример с комментариями. Функция upload - это то, что вы ищете:
// Select your input type file and store it in a variable
const input = document.getElementById('fileinput');
// This will upload the file after having read it
const upload = (file) => {
fetch('http://www.example.net', { // Your POST endpoint
method: 'POST',
headers: {
// Content-Type may need to be completely **omitted**
// or you may need something
"Content-Type": "You will perhaps need to define a content-type here"
},
body: file // This is your file object
}).then(
response => response.json() // if the response is a JSON object
).then(
success => console.log(success) // Handle the success response object
).catch(
error => console.log(error) // Handle the error response object
);
};
// Event handler executed when a file is selected
const onSelectFile = () => upload(input.files[0]);
// Add a listener on your input
// It will be triggered when a file will be selected
input.addEventListener('change', onSelectFile, false);
const arr = [
{ name: "name1", name1: "name2" },
{ name: "Egor", name1: "Fill" },
{ name: "Egorka", name1: "beter" },
{ name: "fullName", name1: "Man" }
];
const filterList = arr.filter(items =>
Object.values(items).some(element => element.indexOf("Egor") > -1)
);
console.log(filterList);
[ { name: 'Egor', name1: 'Fill' }, { name: 'Egorka', name1: 'beter' } ]
res.body
неопределен, вот и возвращает undefinedconst responseBody = res => res.body;
const responseBody = res => res.data;
import axios from 'axios';
const API_ROOT = 'http://api.startgiven.ru:8080/stargiven-1.0/api';
const API = api => `${API_ROOT}${api}`;
const responseBody = res => res.data;
const handleError = err => {
if (err && err.response && err.response.status === 401) authStore.logout();
};
const request = {
get: url =>
axios
.get(API(url))
.catch(err => console.log(err))
.then(responseBody)
};
const Reviews = {
all: () => request.get('/comments')
};
export { Reviews };
import { Reviews } from './agent.mjs';
console.log("test1:", Reviews );
console.log("test2:", Reviews.all().then(a=>{
console.log("test3:", a);
}) );
$ node --experimental-modules test.mjs
(node:2668) ExperimentalWarning: The ESM module loader is experimental.
test1: { all: [Function: all] }
test2: Promise { <pending> }
test3: [
{
description: 'Все круто, очень. Молодцы!',
email: 'ivanivanov@gmail.com',
firstName: 'Иван',
id: 10,
lastName: 'Иванов',
rate: 5,
status: 0
},
{
description: 'Все круто, очень. Молодцы!',
email: 'ivanivanov@gmail.com',
firstName: 'Иван',
id: 11,
lastName: 'Иванов',
rate: 6,
status: 0
},
{
description: 'Все круто, очень. Молодцы!',
email: 'ivanivanov@gmail.com',
firstName: 'Иван',
id: 12,
lastName: 'Иванов',
rate: 6,
status: 0
},
{
description: 'Все круто, очень. Молодцы!',
email: 'ivanivanov@gmail.com',
firstName: 'Иван',
id: 13,
lastName: 'Иванов',
rate: 6,
status: 0
},
{
description: 'Все круто, очень. Молодцы!',
email: 'ivanivanov@gmail.com',
firstName: 'Иван',
id: 14,
lastName: 'Иванов',
rate: 6,
status: 0
},
{
description: 'СУПЕР',
email: 'info@3peaks.cloud',
firstName: 'Aline',
id: 15,
lastName: 'Basdasd',
rate: 5,
status: 0
},
{
description: 'СУПЕР',
email: 'info@3peaks.cloud',
firstName: 'Aline',
id: 16,
lastName: 'Basdasd',
rate: 5,
status: 0
},
{
description: 'СУПЕР',
email: 'info@3peaks.cloud',
firstName: 'Aline',
id: 17,
lastName: 'Basdasd',
rate: 5,
status: 0
},
{
description: 'СУПЕР',
email: 'info@3peaks.cloud',
firstName: 'Aline',
id: 18,
lastName: 'Basdasd',
rate: 5,
status: 0
}
]
Как быть в случае, если путь до файла должен быть динамическим, например, по дням недели?
// роутер Express-а ./routes/files
var fs = require('fs');
var express = require('express');
var router = express.Router();
// получаем файлы
var multer = require('multer');
var upload = multer({
dest:'./folder_for_upload_files/'
// прочие опции
}).single("upload");
router.post('/files/upload', function(req, res, next) {
upload(req, res, function (err) {
if (err){
// обработка ошибки
// и завершение обработки запроса res.end() или res.send(...)
return;
}
// если же загрузка произошла успешно, то
// 1. определяем в какую папку и под каким именем переместить файл
// 2. перемещаем файл в нужную папку
// 3. делаем об этом запись в БД или в файлики или кудато еще (в место предназначенное для хранения этой информации)
// 4. завершаем обработки запроса ( res.end() или res.send(...) )
// в помощь:
// req.file.originalname - оригинальное имя файла на компе клиента
// req.file.filename - имя загруженного в "./folder_for_upload_files/" файла
});
});
module.exports = router;
эта регулярка не запрещает ввод других символов
// внутри async function
let quiz = global_quizzes[quiz_id];
if(!quiz) {
global_quizzes[quiz_id] = quiz = Chat_Quizzes.findById(quiz_id).exec();
}
if( quiz instanceof Promise ){
global_quizzes[quiz_id] = quiz = await quiz;
}
chat.quiz = quiz;