/ / Ako zachovať dátum od klienta uloženého v MongoDB ako dátum? - angularjs, node.js, date, node-mongodb-native

Ako zachovať dátum z klienta uloženého v MongoDB ako dátum? - angularjs, node.js, dátum, node-mongodb-native

Používam pre webové projekty Node.js a Angular.js. Rozumiem, že dátum sa uloží ako dátum, ak sa vytvorí na serveri pomocou nového dátumu () (napr. 2015-04-08 04:15:18.712Z zobrazené v Robomongo ako typ dátumu). Ak sa však dátum vytvorí na klientovi pomocou nového dátumu (), uloží sa ako reťazec (napr. 2015-04-07T04:58:12.771Z zobrazené v Robomongo ako typ String), pretože sa stáva reťazcom prostredníctvom uzlového rozhrania API. Ako ho uložiť ako Dátum namiesto reťazca?

UPDATE: To je to, čo som získal na základe vstupu Jasona Custa. V serveri uzla servera.js špecifikujte voľbu revivera takto:

app.use(bodyParser.json({ reviver: function(key, value) {
if ( typeof value === "string" && value.length === 24) {
if (value.match(/^dddd-dd-ddTdd:dd:dd.dddZ$/)){
return new Date(value);
}
}
return value;
}}));

Toto automaticky skonvertuje všetky dátumové reťazce na dátumové objekty, keď sa dáta odosielajú z klienta na server.

Ak chcete urobiť to isté pre klienta Angular.js, našiel som dobrý blog Andrewa Daveyho Automatická analýza dátumu JSON s AngularJS

odpovede:

0 pre odpoveď č. 1

Budem predpokladať, že používate JSON na odoslanie dátumu z vašej aplikácie Angular do aplikácie Node. JSON spec nerobí rekonštituovanie objektu Date, takže ho budete musieť urobiť sami pred vložením do MongoDB.

Príklad:

// simulate JSON from HTTP request
var json = JSON.stringify({date: new Date()});
console.log(json);
// outputs: "{"date":"2015-04-08T04:50:04.252Z"}"
var obj = JSON.parse(json);
console.log(obj);
// outputs: { date: "2015-04-08T04:50:04.252Z" }
// reconstitute Date object
obj.date = new Date(obj.date);
console.log(obj);
// outputs: { date: Wed Apr 08 2015 00:50:04 GMT-0400 (EDT) }