web-dev-qa-db-fra.com

Créer un objet de date ISO en javascript

J'ai une base de données mongo mise en place. créer un nouvel objet de date dans mongoDb créer un objet de date au format ISO, par exemple: ISODate("2012-07-14T00:00:00Z")

J'utilise node.js pour me connecter à la base de données Mongo et interroger la base de données. chaque fois que je crée un nouvel objet de date (new Date()) en javascript, il crée un objet de date javascript, par exemple: Wed Mar 06 2013 14:49:51 GMT-0600 (CST)

Y a-t-il un moyen de créer un objet de date ISO en javascript afin que je puisse envoyer l'objet directement à mongoDb et effectuer une requête de date

Je suis capable d'effectuer la requête ci-dessous dans mongoDb

db.schedule_collection.find({
  start_date: { '$gte': new Date(2012, 01, 03, 8, 30) }
})

mais je ne peux pas jouer quand j'envoie un objet date javascript depuis un noeud

Le livre de recettes mongodb fournit un exemple python) permettant d'interroger la base de données mongo à l'aide du module datetime, mais ne fournit aucun exemple d'utilisation de javascript.

Toute aide est appréciée. vous remerciant à l'avance

51
Joel James

Essayez d'utiliser la chaîne ISO

var isodate = new Date().toISOString()

Voir aussi: définition de la méthode sur MDN .

86
Mathletics

En nœud, le pilote Mongo vous donnera une chaîne ISO, pas l'objet. (ex: Mon Nov 24 2014 01:30:34 GMT-0800 (PST)) Donc, convertissez-le simplement en js Date de: new Date(ISOString);

10
iheartweb

essayez ci-dessous:

var temp_datetime_obj = new Date();

collection.find({
    start_date:{
        $gte: new Date(temp_datetime_obj.toISOString())
    }
}).toArray(function(err, items) { 
    /* you can console.log here */ 
});
9
Abdullah Shahin

J'ai résolu ce problème en instanciant un nouvel objet Date dans node.js: ...

En Javascript, envoyez le Date (). ToISOString () à nodejs: ...

var start_date = new Date(2012, 01, 03, 8, 30);

$.ajax({
    type: 'POST',
    data: { start_date: start_date.toISOString() },
    url: '/queryScheduleCollection',
    dataType: 'JSON'
}).done(function( response ) { ... });

Puis utilisez ISOString pour créer un nouvel objet Date dans nodejs: ..

exports.queryScheduleCollection = function(db){
    return function(req, res){

        var start_date = new Date(req.body.start_date);

        db.collection('schedule_collection').find(
            { start_date: { $gte: start_date } }
        ).toArray( function (err,d){
            ...
            res.json(d)
        })
    }
};

Remarque: j'utilise Express et Mongoskin.

2
fgborja