Estou usando o pacote mongoose para extrair dados do MongoDB (usando cb) e enviar ao navegador. Uma das propriedades que estou puxando é um objeto de data, tento alterar esse objeto de data para uma String antes de passar para o arquivo HTML, porém não é reatribuído. Alguma razão para quê?
Tentei reatribuir a um Date () diferente e isso reatribui a variável. As regras de esquema ainda se aplicam ao acessar / alterar dados no retorno de chamada? Como posso alterar essa variável para uma string que representa uma data?
function index(req, res, next) {
Flight.find({},function(err, flights){
flights.forEach(function(flight){
flight.departs = 'any string';
console.log(flight.departs);
})
res.render('flights/index', {flightDocs: flights, title: 'Flights', moment});
})
}
O console mostra isso - são os objetos de data originalmente no banco de dados.
2020-11-17T23:56:00.000Z
2019-11-17T22:01:00.000Z
2019-11-17T23:05:00.000Z
2019-11-17T22:03:00.000Z
2020-11-18T00:01:00.000Z
2020-11-18T00:01:00.000Z
flight
é um modelo de mangusto, não um objeto normal, então eu acho, quando você chamar flight.departs
getter do modelo será chamado para retornar o valor deles.
Você converteu um modelo em um objeto json e, em seguida, edite o novo objeto json, se desejar.
function index(req, res, next) {
Flight.find({}, function (err, flights) {
const flightsResult = flights.map(function (flight) {
const json = flight.toJson(); // convert doc to json object
json.departs = 'any string'; // update json property
console.log(flight.departs);
return json;
});
res.render('flights/index', { flightDocs: flightsResult, title: 'Flights', moment });
})
}
Ou apenas diga ao Mongoose que tudo o que você precisa é uma versão JavaScript simples do documento retornado usando lean () na cadeia de consulta.
function index(req, res, next) {
Flight.find({}).lean().exec(function (err, flights) {
flights.forEach(function (flight) {
flight.departs = 'any string';
console.log(flight.departs);
})
res.render('flights/index', { flightDocs: flights, title: 'Flights', moment });
})
}
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras