Я работал над небольшим доказательством концепции веб-приложения с использованием 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('/')
}
};