将查询字符串转换为日期对象

时间:2018-11-07 23:18:33

标签: express query-string feathersjs

我有一个div端点 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous"> <div class="container-fluid"> <div class="row"> <div class="col-lg-8"> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> <div class="col-3"> <div class="card"> <img class="card-img-top img-fluid" src="http://placehold.it/750x325" alt="Card image cap"> <h4 class="card-title">Card title</h4> </div> </div> </div> <div class="col-lg-4" style="background-color: blue"> </div> </div> </div>

我正在使用featherjsfeathers-rest client来致电我的服务。

我的问题是我得到req.query为 GET 我将日期作为字符串而不是日期对象。

如果遇到任何ISODate字符串,有什么方法可以将查询转换为具有正确的日期对象?

我尝试过类似的事情

/internal/users?role=057426a1235fa1084c6f&lastLoggedIn[$lte]=2018-11-07T22:57:44.612Z

这工作正常,但是有什么方法可以传递给 { role: '057426a1235fa1084c6f', lastLogged: { $lte: '2018-11-07T22:57:44.612Z' } } ,它可以将日期字符串自动转换为日期对象?

1 个答案:

答案 0 :(得分:1)

我认为,如果您通过一些包含flat本身的键传递查询,您的unflat.可能会遇到问题。

所以,这可以帮助您, 使用qs

app.use(req, res, next) => {
   req.query = qs.parse(qs.stringify(req.query), {
    decoder: dateCheck, // dateCheck returns date object if ISODate String
  });
}

您的dateCheck函数应该是这样的

const dateCheck = (value, decoder) => {
  const key = decoder(value); // this 
  //      ... rest of date check function
}