NodeJS और jQuery का उपयोग कर MongDB डेटाबेस का पता कर रहा

वोट
1

मैं अपने डेटाबेस क्वेरी करने के लिए बनाया गया कोशिश कर अटक कर रहा हूँ MongoDB का उपयोग कर (ODM के रूप में नेवला के साथ) और पृष्ठ पर परिणाम प्रदर्शित। एक संग्रह मैं 'प्रविष्टियाँ' नाम में डेटाबेस डेटा संग्रहीत करता है ( 'wwww.example.com':: 'तारीख', और लिंक तारीख के शामिल)। मैं दो बार देखा गया है कि मैं डेटाबेस का उपयोग करने के लिए उपयोग करना चाहते हैं: एक दृश्य जो किसी खास दिन पर सही लिंक प्रदर्शित करने की तारीख कुंजी का उपयोग करेंगे; और डेटाबेस, जहां मैं, देख सकते हैं प्रविष्टियों को जोड़ने और हटाने के एक दृश्य। मैं किसी भी तरह डेटाबेस देखने के लिए प्रविष्टियों के माध्यम से लूप करने में सक्षम था और उन्हें डोम में जोड़ने के लिए लेकिन जब मैं विजेट देखने के लिए एक ही कोशिश मैं प्रविष्टियों संग्रह से JSON ऑब्जेक्ट का उपयोग नहीं कर पा रहे। मैं अपने HTML के लिए एक पूर्वप्रक्रमक के रूप में जेड उपयोग कर रहा हूँ

मेरे app.js फ़ाइल इसलिए की तरह है:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var router = express.Router();
//database stuff
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//connect to the data store and the set up the database
var db = mongoose.connection;

//connect to the database
var conn = mongoose.connect('mongodb://localhost/Mandela_Diaries/data');

//Create a model which connects to the schema and entries collection in the Mandela_Diaries database
var Entry = mongoose.model(Entry, new Schema({date: 'date', link: 'string'}), entries);

mongoose.connection.on(open, function() {
  console.log(mongodb is connected!);
});

var routes = require('./models/index');
var users = require('./routes/users');
var database = require('./routes/database');
var methodOverride = require('method-override');
var templatemain = require('./routes/template-main');

var app = express();

// Methodoverride at the top
app.use(methodOverride('_method'));

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());

//serving static files
app.use('/public', express.static(__dirname + '/public'));
app.use('/public', express.static(__dirname + '/css'));
app.use('/public', express.static(__dirname + '/js'));
app.use('/public', express.static(__dirname + '/images'));
app.use('/public', express.static(__dirname + '/node_modules'));

app.use('/', routes);

app.use('/', routes);

app.use('/', routes);
app.use('/database', database);
app.use('/create', database);
app.use('/delete', database);
app.use('/:id', database);
// app.use('/database/#{entry._id}?/delete', database);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;
module.exports.Entry = Entry;

app.listen(8080);

console.log(The server has started);

मेरे database.js रूटर कोड इसलिए की तरह है:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Entry = mongoose.model('Entry');

//The route for getting data for the database - GET form
router.get(/, function(req, res) {
  //Send the current entries to the page
  Entry.find({}, function(err, entries) {
    console.log(entries);
    if(err) {
      res.status(404).json({error: not found, err:err});
      return;
    } else {
      res.render('database', {title: 'database', entries: entries});
      //console.log(entries);
      //entries.forEach(printjson);
    }
  });

});

//The route for posting data to the database - POST
router.post('/', function(req, res) {
  var newEntry = new Entry(req.body);
  newEntry.save(function(err, entries){
    if (err !== null) {
      res.status(500).json(err);
    } else {
      res.redirect('database');
    };
  });
});

//The route for deleting data to the database - Delete/remove todo item by its id
// Changed path from `/` to `/:id`
    router.delete('/:id', function (req, res) {
        Entry.findById(req.params.id)
            .exec(function(err, entries) {
               // changed `if (err || !doc)` to `if (err || !entries)`
                if (err || !entries) {
                    res.statusCode = 404;
                    res.send({});
                } else {
                    entries.remove(function(err) {
                        if (err) {
                            res.statusCode = 403;
                            res.send(err);
                        } else {
                            res.send('Deleted entry with link: ', entries.link);
                        }
                    });
                }
            });
    });

module.exports = router;

मेरे index.js रूटर कोड इसलिए की तरह है:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Entry = mongoose.model('Entry');
var moment = require('moment');

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('/', { title: 'Express' });
  Entry.find({}, function(err, entries) {
        if(err) {
            res.status(404).json({error: not found, err:err});
            return;
        } else {
            res.render('/', {title: 'database',  entries: entries});
        }
    });
});

console.log(new code works);

module.exports = router;

मेरे script.js कोड jQuery चल तारीख के अनुसार इतना की तरह है सही वीडियो लिंक संलग्न करके:

$(document).ready(function() {
//Date picker jQuery
$(function() {
    $( .datepicker ).datepicker();
    $( #format ).change(function() {
      $( .datepicker ).datepicker( option, dateFormat, $( this ).val() );
    });
  });

var browserDate = new Date();
var videoDate = new Date(1962);
//var month = browserDate.getMonth() + 1;
//var day = browserDate.getDate();
//var year = browserDate.getFullYear();

var context = browserDate - videoDate;

$('#context').innerHTML = ON THIS DAY  + context +  YEARS AGO:;
console.log(ON THIS DAY  + context +  YEARS AGO:);

console.log(This worked!!);
console.log(browserDate);

});

और index.jade के लिए मेरे जेड कोड इस तरह है:

extends layout

block content
   #widget.container
      .row
        #header.col-xs-12.header
          img#Mandela_Logo(src='/public/images/Logo_MandelaDiaries.png')
      .row
        #context.col-xs-12
      .row
        #videos.col-xs-12
          .embed-responsive.embed-responsive-4by3
            iframe(width='300', height='169', src='https://www.youtube.com/embed/4HqtAMHrJ8s', frameborder='0', allowfullscreen='')
      .row
        #footer.col-xs-12
          img#NMF_logo(src='/public/images/Logo_NMF.png')
          img#SABC_logo(src='/public/images/Logo_SABCNews.png')

मैं यहाँ काम करने के लिए मेरी jQuery प्राप्त करने के लिए सक्षम होने के लिए नहीं कर पा रहे। मैं सिर्फ यह माध्यम से JSON ऑब्जेक्ट और पाश हो और प्रासंगिक दिन, ब्राउज़र तिथि के आधार पर मिल जाए, और मेरी विजेट में iframe पर संबंधित लिंक पर अनुलग्न करना चाहते हैं।

29/06/2015 को 09:53
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

चीजों को आसान बनाने के लिए, आप इस्तेमाल कर सकते हैं momentjs पुस्तकालय जो दिनांक के साथ काम पर बहुत अच्छा है। आपके उपयोग के मामले में, आप का उपयोग करना चाहते fromNow()विधि है जो अब से रिश्तेदार समय प्रदर्शित करता है, उदाहरण के लिए कहते हैं

moment([2011, 0, 29]).fromNow(); // 4 years ago
moment("1962-04-08T09:48:16.189Z").fromNow() // 53 years ago 

आपके विचारों में momentjs लाइब्रेरी का उपयोग करने के लिए, आप अपने एक्सप्रेस आवेदन स्थानीय लोगों को जोड़ने के लिए इस प्रकार की जरूरत है:

express = require('express');
...
var app = express();
app.locals.moment = require('moment');

चूंकि आप अपने जेड विचारों में में सादे JavaScript कोड का उपयोग कर सकते हैं, आप आसानी से कर सकते हैं:

extends layout

block content
   #widget.container
      .row
        #header.col-xs-12.header
          img#Mandela_Logo(src='/public/images/Logo_MandelaDiaries.png')
      .row
        #context.col-xs-12
            each entry in entries
                p= 'ON THIS DAY ' + moment(entry.date).fromNow() + ' -  Link: ' + entry.link + ' '              
      .row
        #videos.col-xs-12
          .embed-responsive.embed-responsive-4by3
            iframe(width='300', height='169', src='https://www.youtube.com/embed/4HqtAMHrJ8s', frameborder='0', allowfullscreen='')
      .row
        #footer.col-xs-12
          img#NMF_logo(src='/public/images/Logo_NMF.png')
          img#SABC_logo(src='/public/images/Logo_SABCNews.png')

डेमो

स्रोत : सर्वर साइड जेड टेम्पलेट्स में उपयोगिता पुस्तकालयों का प्रयोग करने वाले

29/06/2015 को 13:12
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more