VY
Size: a a a
VY
AS
VY
AS
VY
AS
Б
Б
VY
VY
Б
VY
Б
Y
Б
<button onClick={()=>{А функция REQUEST является на самом деле макросом - на этапе сборки запрос внутри заменится айдишником и загрузится в базу а на клиенте будет происходить просто передача айдишника запроса вместе с аргументами
const { todoId } = this.props;
const todo = await REQUEST(todoId, this.state.newSubTodoText, (db, session, todoId, text) => {
const todo = db.tables.todos.find(todoId);
db.tables.subtodos.create().update({todo, text});
return {
id: todo.id,
text: todo.text,
completed: todo.completed
subtodos: todo.subtodos.map(subtodo=>({
id: subtodo.id,
text: todo.text,
completed: subtodo.completed
}))
}
});
this.setState({todo});
}}>...</button>
const todo = await REQUEST(todoId, "ID_2323223");В итоге я могу аналогично grapqhl на клиенте вытащить необходимые данные просто возвращая объект и вложенные массивы с объектами через .map()
const allSubtaskPrice = await REQUEST(projectId, (db, session, projectId)=>{или наоборот могу из глубокой сущности через точку обратиться к родительской сущности
let subtasksPrice = 0;
const folder = db.tables.projects.find(projectId);
folder.projects.forEach(project => {
project.tasks.forEach(task => {
task.subtasks.forEach(subtask => {
subtasksPrice += subtask.price;
})
})
}
return subtasksPrice;
}
const folderPriority = await REQUEST(subtaskId, (db, session, subtaskId) => {И в отличие от graphql мы имеем возможнось описать на клиенте не только какие вложенные сущности нужны а и гибко их обрабатывать, фильтровать а также проверять права доступа или сокрытие важных полей и т.д
const subtasks = db.tables.subtasks.find(subtaskId);
return subtask.task.project.folder.priority;
})
G
pg
; для чего в Pool есть метод connect(), возвращающий одно соединение? Ведь пул спроектирован для нескольких конкурентных конекшенов by design. Есть какое то практическое применение в использовании pool.connect() вместо просто new Client(...)?j
ES
j