【问题标题】:Exercise-tracker FreeCodeCamp运动追踪器 FreeCodeCamp
【发布时间】:2021-11-30 18:33:12
【问题描述】:

我有这个问题,我不知道我应该做什么。

我的问题如下:

  • 从返回的日志数组中的每个项目
    GET /api/users/:id/logs
    

    是一个应该具有date 属性的对象。

  • 从返回的日志数组中的任何对象的日期属性
    GET /api/users/:id/logs
    

    应该是一个字符串。使用 Date API 的 dateString 格式。

这是 MongoDB 中的数据: Mongodb pic

当我尝试从数据库中检索数据时,它应该是这样的

"date": "Mon May 17 2021"

我是从哪里得到的

"date": "2021-05-15T18:30:00.000Z"

改为。

所以我的问题的可能答案是“我应该如何更改从服务器或 MongoDB 获取的数据,即我应该如何更改/修改从服务器获取的数据数组”。

Mongoose 架构

const exerciseSchema = new mongoose.Schema({
  description: { type: String, required: true },
  count: Number,
  duration: { type: Number, required: true },
  date: Date,
});
const Exercise = new mongoose.model('exercise', exerciseSchema);

const personSchema = new mongoose.Schema({
  username: { type: String, unique: true, required: true },
  log: [exerciseSchema],
});
const Person = mongoose.model('Person', personSchema);

API 路由

app.get('/api/users/:_id/logs', (req, res) => {
  const helid = req.params._id;
  Person.findById(helid, (err, data) => {
    if (err) {
      res.json('USER NOT FOUND');
    } else {
      res.json({
        username: data.username,
        _id: data._id,
        count: data.log.length,
        log: data.log,
      });
    }
  });
});

【问题讨论】:

  • 欢迎来到 StackOverflow!您能否尝试在问题中包含数据的实际代码而不是图像,因为图像中的代码无法复制并粘贴到编辑器中并进行编译以重现问题?除了通常不建议在 SO 上发布代码图像的许多其他原因之外,图像很大并且难以在移动设备上阅读,它们无法被搜索,因此对未来的读者没有用处。您要求我们免费提供时间来解决您的问题,您应该让我们尽可能轻松地解决问题
  • 哦,谢谢,这实际上是我第一次来,所以我很抱歉......
  • 不用担心@MeheerJ :) 您可以使用edit 链接更新您的问题并将代码包含在图片中,我们非常乐意提供帮助!
  • 非常感谢您向我展示了如何显示问题......

标签: javascript node.js mongodb express mongoose


【解决方案1】:

最简单的方法是映射日志和响应并将日期转换为日期字符串。像这样的:


res.json({
    username: data.username,
    _id: data._id,
    count: data.log.length,
    log: [...data.log.map(logItem => ({...logItem, date: new Date(logItem.date).toDateString()}))]
})

【讨论】:

  • 我尝试了不同的方式,但我没有像我预期的那样工作,但感谢您抽出时间帮助我。
  • @MeheerJ 您的目标是在前端应用程序上以指定格式显示日期吗?如果是这样,我建议使用当前的实现,因为将带有时区信息的完整日期传递给前端应用程序是一种更好的做法。在前端,您可以使用日期 api (new Date(dateString).toDateString()) 将其转换为所需的格式
  • 嗯,不,这似乎也不起作用......所以到目前为止,我试图像这样制作 2 var obj:- ``` var logData = { duration: data.log.duration,描述:data.log.description,日期:新日期(data.log.date).toDateString()} var dataExercise = new练习({用户名:data.username,_id:data._id,计数:data.log.length , log: [logData] }) ``` 所以在这你能帮我完成这项工作。它还没有工作。但如果这行得通,它应该是 fyn
猜你喜欢
  • 2021-02-21
  • 1970-01-01
  • 2014-10-20
  • 2012-11-30
  • 2018-07-09
  • 2011-05-15
  • 2017-07-18
  • 2022-07-26
  • 2021-10-02
相关资源
最近更新 更多