Пытаюсь изучить узел.
У меня есть почтовый запрос, который отправляет такие метрики погоды, как отметка времени, температура, точка росы и осадки.
I 'я могу успешно отправить запрос со следующим req.body
У меня есть магазин, обрабатывающий бизнес-логику, то есть:
/* measurement-store */
export function addMeasurement(measurement) {
// cache results on a new object
const measurements = { timestamp: measurement.timestamp.toISOString() }
if (measurement) {
for (const [metric, value] of measurement.metrics.entries()) {
measurements[metric] = value // retrieve metric values
}
return measurements
} else {
throw new HttpError(501)
}
}
Таким образом, конечная точка потребляет его
/*measure-routes.js*/
import * as store from './measurement-store'
****
// Handle POST Measurements
router.post('/', (req, res) => {
const measurement = parseMeasurement(req.body) // method to parse the req.body
store.addMeasurement(measurement)
res
.location(`/measurements/${measurement.timestamp.toISOString()}`)
.status(201)
.json({
message: 'Measurements were successfully created',
measurement
})
})
Как вы увидите здесь, вызов POST успешен:
Моя проблема не в том, что я не могу получить и получитьНедавно созданный объект
Я не могу подключить правильную бизнес-логику в своем магазине, чтобы при передаче вызова GET, например, http://localhost:9000/measurements/2015-09-02T16:00:00.000Z
Результаты обрабатывались с помощьюstatus 200
Это мой маршрут GET
/*measure-routes.js*/
router.get('/:timestamp', (req, res) => {
const result = store.fetchMeasurement(new Date(req.params.timestamp))
if (result) res.json(serializeMeasurement(result))
else res.sendStatus(404)
})
Вот как serializeMeasurement()
массирует данные.
function serializeMeasurement(measurement) {
const out = { timestamp: measurement.timestamp.toISOString() }
for (const [metric, value] of measurement.metrics.entries()) {
out[metric] = value
}
return out
}
Можете ли вы помочь мне применить правильныйПОЛУЧИТЕ бизнес-логику здесь ??
/* measurement-store */
export function fetchMeasurement(timestamp) {
if (timestamp) {
console.log('FETCH', timestamp) // => 2015-09-02T16:00:00.000Z
}
throw new HttpError(501)
}