как мне получить дату в пн goose так же, как я ее набираю? - PullRequest
0 голосов
/ 20 января 2020

для моего тренировочного проекта, я работаю над приложением-парикмахером с реакцией и nodejs. Для формы ввода в моем React я получил дату, которую я печатаю, когда я console.log (), она дает мне

date: '2020-01-24',

но когда я получаю данные из бэк-энда, я получаю это как

date: 2020-01-24T00:00:00.000Z

Мне нужен только год, месяц и дата, как я могу сделать это

бэкэнд модель. js

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const postSchema = new Schema(
{
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: false
  },
  phone: {
    type: Number,
    required: true
  },
  age: {
    type: Number,
    required: true
  },
  date: {
    type: Date,
    required: true
  },
  time: {
    type: String,
    required: true
  },
  content: {
    type: String,
    required: true
  },
  price: {
    type: Number,
    default: ""
  }
},
{
  timestamps: true
}
);

module.exports = mongoose.model("Post", postSchema); 

маршрут / подача. js

const express = require("express");
const { body } = require("express-validator");
const router = express.Router();
const feedController = require("../controllers/feed");
router.post(
  "/feed",
  feedController.createFeed
); 

контроллер / подача. js

const Post = require("../models/post");
//const { validationResult } = require("express-validator");
//const stripe = require("stripe")();

exports.createFeed = (req, res, next) => {
  console.log(req.body);
  const name = req.body.name;
  const email = req.body.email;
  const phone = req.body.phone;
  const age = req.body.age;
  const date = req.body.date;
  const time = req.body.time;
  const content = req.body.content;
  const price = req.body.price;
  console.log(date, time);

  const post = new Post({
    name: name,
    email: email,
    phone: phone,
    age: age,
    date: date,
    time: time,
    content: content,
    price: price
  });

  post
    .save()
    .then(result => {
      console.log(result);
      res.status(201).json({
        messege: "created succesfully",
        posts: result
      });
    })
    .catch(err => console.log(err));
};

как я мог только получить то, что я ввожу в поле даты? спасибо за вашу помощь.

1 Ответ

1 голос
/ 20 января 2020

Это происходит только из-за типа, который вы поместили в ваш schema. Внутри вашего schema у вас есть тип Date этого поля date. ТАК, когда mongodb сохраняет документ, поэтому он конвертирует ваш string в Date, чей шаблон по умолчанию такой же, в котором вы получаете обратно date от db.

Вариант-1:

Так что, если вы действительно хотите получить дату такой, какая она была, как вы ввели из клиента, просто конвертируйте ваш тип в String внутри вашего schema вот так

date: {
type: String,
required: true

}

Опция-2:

Другой способ достижения желаемого шаблона - это сохранение типа Date внутри вашей схемы. Но когда вы получаете такую ​​дату 2020-01-24T00:00:00.000Z, то конвертируйте эту дату вручную на стороне клиента (react.js) вот так

function formatDate(date) {
var d = new Date(date),
    month = '' + (d.getMonth() + 1),
    day = '' + d.getDate(),
    year = d.getFullYear();

  if (month.length < 2) 
    month = '0' + month;
  if (day.length < 2) 
    day = '0' + day;

  return [year, month, day].join('-');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...