Я пытаюсь отправить массив дат в мою MongoDB. Все выглядит хорошо, когда я регистрирую массив дат и newDateObject, который фактически публикуется в базе данных. ![datesLogging](https://i.stack.imgur.com/ibICh.png)
Но в mongoDb первая дата в массиве фактически является последней датой. ![datesInMongo](https://i.stack.imgur.com/2SxJs.png)
Я понятия не имею, почему это так, и мне не повезло в поиске в Google.
Мой код ниже
import React from 'react';
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import 'react-datepicker/dist/react-datepicker-cssmodules.css';
import moment from 'moment';
import axios from 'axios';
export default class ScheduleTemplate extends React.Component {
constructor (props) {
super(props)
this.state = {
startDate: '',
endDate: ''
};
}
handleStartDateChange = date => {
this.setState({
startDate: date,
});
console.log(this.state);
}
handleEndDateChange = date => {
this.setState({
endDate: date
});
}
getDates = (start, end) => {
const startDate = moment(moment(start).format('YYYY-MM-DD'));
const endDate = moment(moment(end).format('YYYY-MM-DD'));
const datesBetween = [];
let startingMoment = startDate;
datesBetween.push(startingMoment);
while(startingMoment < endDate) {
let newDate = moment(moment(startDate).add(1, 'd').format('YYYY-MM-DD'));
moment(startingMoment.add(1, 'd').format('YYYY-MM-DD'));
datesBetween.push(newDate);
}
return datesBetween;
}
onFormSubmit = e => {
e.preventDefault();
const dates = this.getDates(this.state.startDate, this.state.endDate);
console.log(dates);
const newDatesObject = {
dates: dates
}
console.log(newDatesObject);
axios.post('http://localhost:5000/dates/add', newDatesObject)
.then(res => console.log(res.data));
this.setState({
startDate: '',
endDate: ''
});
}
render() {
return (
<form onSubmit={ this.onFormSubmit } autoComplete="off">
<div className="form-group">
<h6>Start Date</h6>
<DatePicker
selected={ this.state.startDate }
onChange={ this.handleStartDateChange }
name="startDate"
dateFormat="yyyy/MM/dd"
/>
</div>
<div className="form-group">
<h6>End Date</h6>
<DatePicker
selected={ this.state.endDate }
onChange={ this.handleEndDateChange }
name="endDate"
dateFormat="yyyy/MM/dd"
/>
</div>
<button className="btn btn-primary" type='submit'>Post Dates</button><br/>
</form>
);
}
}
Модель
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const datesSchema = new Schema({
dates: [{ type: Date, required: true }],
}, {
timestamps: true,
});
const Dates = mongoose.model('Dates', datesSchema);
module.exports = Dates;
Маршрут
const router = require('express').Router();
let Dates = require('../models/dates.model');
router.post('/add', async (req, res) => {
try {
const { dates } = await req.body;
const newDates = new Dates({
dates
});
await newDates.save()
res.json('Dates added!')
} catch(err) {
console.error(err.message);
res.status(500).json('Server Error');
}
});
router.get('/', async (req, res) => {
try {
const dates = await Dates.find();
res.json(dates);
} catch(err) {
console.error(err.message);
res.send(400).send('Server Error');
}
});