Size: a a a

JavaScript.Ninja

2021 May 14

IK

Illya Klymov in JavaScript.Ninja
но монгу да, не стоит брать в принципе за исчезающе редкими исключениями
источник

AK

Anton Kalodzich in JavaScript.Ninja
Склеивание jsом звучит не так быстро...
источник

IK

Illya Klymov in JavaScript.Ninja
а оно что там что там jsом
источник

IK

Illya Klymov in JavaScript.Ninja
напоминаю что у монги внутри тоже js движок
источник

AK

Anton Kalodzich in JavaScript.Ninja
Не знал
источник

AK

Anton Kalodzich in JavaScript.Ninja
Тогда да
источник

N

Nikita in JavaScript.Ninja
думаю чего такой синтаксис знакомый)
источник

ТФ

Татьяна Фомина... in JavaScript.Ninja
не, так тоже не получается
источник

B

Bruto in JavaScript.Ninja
Ну вы получили user, просто в консоли выводит не глубоко
источник

N

Nikita in JavaScript.Ninja
попробуйте до него обратиться в консоль логе. просто глубины вывода не хватает
источник

ТФ

Татьяна Фомина... in JavaScript.Ninja
щас посмотрю
источник

ТФ

Татьяна Фомина... in JavaScript.Ninja
спасибо
источник

SN

Stepan Naryshkov in JavaScript.Ninja
а можно ли в нексте в getServerSideProps сделать пост запрос с датой, которая хранится в реакт контексте? не нашел такого (
источник

VK

Vladimir Klimov in JavaScript.Ninja
Aggregation pipeline - тоже не быстро)
источник

IK

Illya Klymov in JavaScript.Ninja
ох как не быстро :)
источник

IK

Illya Klymov in JavaScript.Ninja
я тут пытался сделать код аггрегейшном, получилось сильно медленнее чем populate
источник

IK

Illya Klymov in JavaScript.Ninja
но это и ожидаемо. Агрегейт это все-таки про шарды )
источник

ТФ

Татьяна Фомина... in JavaScript.Ninja
Переслано от Татьяна Фомина...
подскажите. почему сокет не срабатывает. подключаю его в файле index.js вот так
const app = express();
const server = http.Server(app);
const io = socketIO(server);

io.on("connection", (socket) => {
 const { id } = socket;
 console.log(`Socket connected: ${id}`);

 const { roomName } = socket.handshake.query;
 console.log(`Socket roomName: ${roomName}`);
 socket.join(roomName);
 socket.on("message-to-room", (msg) => {
   console.log("msg ", msg);
   msg.type = `room: ${roomName}`;
   socket.to(roomName).emit("message-to-room", msg);
   socket.emit("message-to-room", msg);
 });

 socket.on("disconnect", () => {
   console.log(`Socket disconnected: ${id}`);
 });
});

app.use((req, res, next) => {
 req.io = io;
 next();
});

использую в роуте
router.post("/addComment", isAuthenticatedMiddleware, async (req, res) => {
 const { io } = req;
 const { bookId, comment } = req.body;
 const { user: currentUser } = req.user;

 const currentDate = new Date().toISOString();

 try {
   const book = await Book.findByIdAndUpdate(
     { _id: bookId },
     {
       $push: {
         comments: { user: currentUser, text: comment, sentAt: currentDate },
       },
     },
     {
       new: true,
       fields: {
         comments: {
           $slice: -1,
         },
       },
     }
   ).populate({
     path: "comments",
     populate: { path: "user", select: "name" },
   });

   const newComment = book.comments[0];

   io.emit("message-to-room", newComment);

   res.send({
     status: "ok",
   });
 } catch (err) {
   console.log(err);

   res.send({
     status: "error",
   });
 }
});

module.exports = router;

но эмит события не происходит. почему?
источник

OD

Oleh Diian in JavaScript.Ninja
у нас для логов используеться)
источник

VK

Vladimir Klimov in JavaScript.Ninja
Кстати, на счет СУБД, почему postgresql сейчас на волне хайпа?
В чем он сильно лучше по сравнению с тем же mysql сейчас?
источник