Цитата:
import Base from './base';
import { GET, controller } from './core/controller';
@controller(exports)
export default class Guest extends Base {
/**
* Returns true if the the specified room is free
*/
[GET`is-room-free`](o, model) {
o.auth('Staff').push(async (ctx) => {
if (!ctx.user.hasPermissions(['AdminAccess'])) {
o.addGuard(ctx, {hotel: 'hotels'});
}
ctx.body = {result: await model.isRoomFree(ctx.reqData)};
});
}
}
|
kobezzza, спасибо
|
kobezzza,
я решил немного по извращатся и сделать так
import Controller from "../../lib/decorators/Controller";
import RequestMapping from "../../lib/decorators/RequestMapping";
@Controller("/")
export default class {
@RequestMapping("/test")
async getTestPage() {
}
@RequestMapping(["/home","/"])
async getMainPage() {
}
}
|
Вот это заява. Совсем народ обнаглел.
|
Цитата:
|
Цитата:
|
kobezzza, cyber,
вот зачем вы декораторы используете? Они же уже поменялись, были даже предложения поменять их синтаксис. Т.е. эта штука опасная, не даром она в babel-плагинах как легаси числится. |
Цитата:
|
Safort, я использую в своем проекте, на работе жду когда будет готова спецификация)
В моем проекте я так себе добавил много фич, если поменяют то буду менять, но пока мне нравится) |
Цитата:
|
trikadin, я не особо доверяю штукам типа дарт, кофе, туйпскрипт... поэтому только vanilla js ))
|
Цитата:
|
Цитата:
|
cyber,
Так "чистый js" щас второй раз почти умер. Первый раз умирал es3 to es5 когда-то, щас es5 конвульсирует в пользу es6+. Ну то есть я серьезного продакшн-реди ничо на тайпскрипте не писал, но у меня сложилось ощущение, что он от современного js отличается не больше чем современный js от es5. Поправьте меня если я неправ)) И вроде бы ts позиционируется не как язык который будет уходить в сторону от js стандартов, а как язык который будет бежать впереди и прорубать путь. А вот кофе доверять уже поздно имхо, он обрел популярность за счет того что связан с рельсами и js стагнировал. Сейчас js не стагнирует, рельсы сходят на нет. У кофе нет будущего имхо. Про дарт ничо не скажу, не ковырял) |
Цитата:
Цитата:
|
Какие вы используете nosql базы для ноды и какие orm для них?
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
destus, сорян, пропустил))
|
Цитата:
Внизу страницы ссылка на драйверы для node, php .... |
Цитата:
2. Что скажете об Arangodb? По описсание комбайн + перфоманс лучше, чем у ... (по инфе с офф. сайта) http://stackoverflow.com/a/24392094 |
Советую не верить бенчам, т.к. в большинстве случаев там читерство, например на бенчах ориента монго в режиме журналирование, а ориент без и разумеется ориент шустрее выходит) по факту главным критерием субд является скалируемость, а остальное уже от задач (например есть задачи где частое чтение, и редкая запись и наоборот, то там могут быть хороши совершенное разные решения).
|
Цитата:
|
Цитата:
|
|
Цитата:
Вместе с тем мне нужно выбрать ДБ, которая бы отвечала определенным требованиям, среди которых: 1. отказоустройчивость 2. масштабируемость (без джойнов) 3. сравнительно легкая "эмуляция" отношений (one-to-many etc.) 4. транзакции 5. document, key-value, graph БД 6. ... |
Вопрос по запросам в Mongoose / MongoDB:
Требуется выбрать все Issue пользователя, которые: - или были созданы пользователем (issue.authorId === user.id) - или были назначены на пользователя (issue.assigneeId === user.id) - или те, в которых пользователь оставлял комментарии (notes.notableId.contains(issue.id)) Есть три схемы (ниже они упрощены)
// Issue
const schema = new mongoose.Schema(
{
id: Number,
authorId: Number,
assigneeId: Number
}
);
schema.virtual('notes', {
ref: 'Note',
localField: 'id',
foreignField: 'noteableId'
});
// Note
const schema = new mongoose.Schema(
{
id: Number,
noteableId: Number,
authorId: Number
}
);
// User
const schema = new mongoose.Schema(
{
id: Number
}
);
И два запроса
let id = 21; // user.id пользователь
let $in = yield Note.find({authorId:id}).distinct('noteableId'); // все id комментариев пользователя
this.response.body = yield Issue.find({
$or: [
{authorId:id},
{assigneeId:id},
{id:{$in}}
]
});
Можно ли это сделать в 1 запрос? Спасибо. |
Что-то закреплённых тем в оффтопике дофига. Не сразу свою новую тему нашёл. Придётся прибегнуть к пиару чёрному: http://javascript.ru/forum/offtopic/...rrektnost.html
|
Цитата:
|
kobezzza, ты знаешь о фреймворке spring из java?
Как думаешь что то похожее на nodejs имеет смысел? примерно так это выглядит в данный момент, я эксперементирую
import {Controller} from "../../lib/decorators/index";
import {RequestMapping} from "../../lib/decorators/index";
import {RequestMethod} from "../../lib/decorators/index";
@Controller("/")
export default class {
@RequestMapping("/test")
async getTestPage(ctx) {
console.log(ctx.mongodb);
return Promise.resolve("hello test");
}
}
работает это чудо с koa P.s убрал с темы Tim и перенес сюда) |
cyber, про спринг знаю, что это такой фреймворк-фреймворков, но я в общем не явист. В твоём варианте мне главным образом не нравится, что придётся придумывать имена для post, delete и т.д. запросов )
nerv_, если коллекции разные, то тока в 2-ва запроса, но не вижу ничего плохого в этом, кроме разве что неудобства, но это плата за коробочный шардинг. |
kobezzza,
это будет примерно так
import {Controller} from "../../lib/decorators/index";
import {RequestMapping} from "../../lib/decorators/index";
import {RequestMethod} from "../../lib/decorators/index";
@Controller("/")
export default class {
@RequestMapping({ value: "/test", method: RequestMethod.POST} )
async getTestPagePost(ctx) {
console.log(ctx.mongodb);
return Promise.resolve("hello test");
}
@RequestMapping({ value: "/test", method: RequestMethod.GET} )
async getTestPagePost(ctx) {
console.log(ctx.mongodb);
return Promise.resolve("hello test");
}
}
|
cyber, многословно, да и IDE же будет ругаться, что в классе 2 метода с именем getTestPagePost
|
kobezzza, окей, а как лучше? как ты думаешь?
|
Цитата:
@controller()
class myController {
// В качестве имени я юзаю путь
[GET`foo/`]() {
}
[POST`foo/`]() {
}
}
Довольно удобно. |
Если на фейсбуке открыть консоль, то можно лицезреть красивое сообщение:
Цитата:
|
|
cyber,
да, это цвет фон и тд. а как сделать чтобы не отображало номер строки скрипта |
Хотите знать, что заставило меня сегодня улыбаться с утра? :)
Пришло на почту письмо, в котором бла-бла-бла, доступен новый поиск по npm пакетам на сайте https://npms.io Любопытсва ради я зашел туда посмотреть, потыкал и нашел свой загрузчик файлов для ангуляра 1. После чего мне стало любопытно взглянуть на загрузчики файлов для ангуляра 2 и я наткнулся на это. Оказывается, ребята взяли и портировали мой аплоадер для второго ангуляра. Как говорится, найдите 10 отличий: 1. https://github.com/nervgh/angular-fi...0/src/services (мой) 2. https://github.com/valor-software/ng...ts/file-upload (чужой) Вот такая забавная история :) P.S.: в моем аплоадере есть ряд ошибок проектирования. Не буду им говорить, расстраивать :D |
| Часовой пояс GMT +3, время: 20:02. |