Pug Express просмотры всегда используют время сервера - как я могу вместо этого использовать время браузера (время клиента)? - PullRequest
0 голосов
/ 19 июня 2020

Я работал над небольшим доказательством концепции веб-приложения с использованием node / mongoDb / Express / Pug, и я не могу понять, как обойти эту проблему:

Я храню дата транзакции в mongoDB как дата UT C (GMT).
Для отображения дат транзакций в браузере я подумал, что затем могу использовать момент. js, чтобы настроить transaction.date в локальный формат в моем мопс вид. Проблема в том, что поскольку представление подготовлено "на стороне сервера", смещение часового пояса всегда равно 0 (поскольку сервер использует GMT).

Нужно ли мне компилировать это представление? Если да, то как мне это сделать, а затем как визуализировать его с контроллера?

transactionList.pug:

extends layout

block content
  .main.container
    h1 My Transactions
    script(src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js')
    p.lead You are currently logged in as #{user.username}
    br
    #transactions
    .row
      .col-md-8
        table.table
          tr
            th Type
            th Date
            th Name
            th Location
          each transaction in transactions
            include dateStuff
            tr
              td= transaction.type
              +localDate(transaction.date)
              td= transaction.place.name
              td= transaction.place.locationName
    br
    a(href="/user") Update Profile
    br
    a(href="/logout") Logout
    br

dateStuff.pug:

mixin localDate(utcDate)
  - moment = require('moment');
  - var local = moment.utc(utcDate).local().format();
  - console.log('the date: ', local);
  td= local

transactionController. js:

var UserTransaction = require('../models/UserTransaction');
var mongoose = require('mongoose');
var Utils = require('../common/utils');
// Display user transaction list...
exports.transactions_get = function(req, res) {
  console.log(`User authenticated? ${req.isAuthenticated()}`)
  console.log(`req.user: ${JSON.stringify(req.user)}`)

  if (req.isAuthenticated()) {
        UserTransaction.find({'_userId': mongoose.Types.ObjectId(req.user.id)})
        .sort({date: -1})
        .populate('place')
            .exec(function (err, transactions) {
            if (transactions) {
          let moment = require('moment');
          res.locals.require = require;

          res.render('transactionList', { title: 'My Transactions', user: req.user, transactions : transactions});
                //res.json(transactions);
            } else {
          res.render('transactionList', { title: 'My Transactions', user: req.user, transactions : []});
                //res.status(400).json({ error: 'No transactions found.'});
            }
      })
  } else {
    res.redirect('/')
  }

};
...