CREATE TABLE SURVEYS_USERS(
ID SERIAL,
SURVEY_ID UUID NOT NULL,
USER_ID INT NOT NULL,
ACTIVE BOOLEAN,
PRIMARY KEY (ID),
FOREIGN KEY (SURVEY_ID) REFERENCES SURVEYS (ID) ON DELETE CASCADE,
FOREIGN KEY (USER_ID) REFERENCES USERS (ID) ON DELETE CASCADE
);
docker logs [container_name]
. Чтобы беседа была предметной могу скинуть детали.const express = require('express')
const router = express.Router()
const path = require('path')
let Client = require('ssh2-sftp-client')
let sftp = new Client()
const config = require('../config')
router.post('/', (req, res) => {
const fileName = req.body.file_name
const remotePath = '/reports/' + fileName
const localePath = path.join(process.env.HOME || process.env.USERPROFILE, 'Downloads/' + fileName)
sftp.connect(config.sftpServer, 'on').then(() => {
sftp.fastGet(remotePath, localePath, {}).then(() => {
res.header('Content-type', 'text/csv; charset=windows-1251')
res.sendFile(localePath)
sftp.end()
}).catch((err) => {
sftp.end()
console.log(err, 'fastGet method error')
})
}).catch((err) => {
sftp.end()
console.log(err, 'connect method error')
})
})
module.exports = router
FROM node:latest
COPY / ./
EXPOSE 3010
RUN mkdir -p /root/Downloads
CMD ["node", "server/bin/www"]
// Пользователь делает поиск в элементе "SearchControl"
self.searchControl.events.add('resultselect', function(e) {
const index = e.get('index');
self.searchControl.getResult(index).then(function(res) {
// Создаем метку
self.searchPlacemark = new ymaps.Placemark(
res.geometry.getCoordinates(),
{
hintContent: res.geometry.getCoordinates(),
}, {
preset: 'islands#blueStarIcon',
iconColor: '#ff411a',
}
);
// Добавляем метку на карту
self.map.geoObjects.add(self.searchPlacemark);
// Проверяем вхождение метки в первую коллекцию
self.firstPolygonCollection.each(function(polygon) {
console.log("Проход по первой коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом A.")
}
});
// Проверяем вхождение метки во вторую коллекцию
self.secondPolygonCollection.each(function(polygon) {
console.log("Проход по второй коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом B.")
}
});
// Проверяем вхождение метки в третью коллекцию
self.thirdPolygonCollection.each(function(polygon) {
console.log("Проход по третей коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом C.")
}
});
});
});
// Пользователь делает поиск в элементе "SearchControl"
self.searchControl.events.add('resultselect', function(e) {
const index = e.get('index');
self.searchControl.getResult(index).then(function(res) {
// Создаем метку
self.searchPlacemark = new ymaps.Placemark(
res.geometry.getCoordinates(),
{
hintContent: res.geometry.getCoordinates(),
}, {
preset: 'islands#blueStarIcon',
iconColor: '#ff411a',
}
);
// Добавляем метку на карту
self.map.geoObjects.add(self.searchPlacemark);
// Проверяем вхождение метки в первую коллекцию
self.firstPolygonCollection.each(function(polygon) {
console.log("Проход по первой коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом A.")
}
});
// Проверяем вхождение метки во вторую коллекцию
self.secondPolygonCollection.each(function(polygon) {
console.log("Проход по второй коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом B.")
}
});
// Проверяем вхождение метки в третью коллекцию
self.thirdPolygonCollection.each(function(polygon) {
console.log("Проход по третей коллекции.")
if(polygon.contains(res.geometry.getCoordinates())) {
console.log("Метка входит в полигон c типом C.")
}
});
});
});
WHERE STATUS=0
вытащить, но здесь вопрос в другом был. View
или Materialized View
? К примеру в таблице "REPORT" есть столбец "STATUS". Он показывает статус отчета. Мне нужно отдельно хранить где-то все записи (отчеты) из таблицы "REPORT" в которых значение столбца STATUS равен нулю. К примеру если создается новая запись у которой статус ноль, она должно попасть в представление. Если у какой-то уже существующей записи, поменяли статус на ноль, то она должно попасть в то представление. Если в записи со статусом ноль поменяли значение других столбцов, то эти изменения должны быть и у записи в представлении. Если у записи со статусом ноль поменяли значение на 1 или 2, то запись из представления должна исчезнуть. Под синхронизацией я имел введу это. Что можете сказать по этому поводу.
Я предполагал, что нужно лишь поменять функцию Scan. Не могу понять как безболезненно добавить вашу функцию.