2017-07-02 69 views
0

我已經按照DTHMLX調度程序tutorial,但我一直無法得到db.event.insert()工作,因爲它的路線沒有觸發。但是,當我通過shell插入數據時,我能夠顯示來自我的MongoDB的數據。DHTMLX調度程序與節點JS

像教程一樣,我使用MongoSkin作爲MongoDB驅動程序。 MongoSkin和Express都是相同的版本"mongoskin": "~0.6.0" & "express": "~3.3.8"就像它在教程中一樣。

<!-- index.html --> 
<!doctype html> 
<head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <title>Basic initialization</title> 
</head> 
    <script src="codebase/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> 
    <link rel="stylesheet" href="codebase/dhtmlxscheduler.css" type="text/css" media="screen" title="no title" charset="utf-8"> 


<style type="text/css" media="screen"> 
    html, body{ 
     margin:0px; 
     padding:0px; 
     height:100%; 
     overflow:hidden; 
    } 
</style> 

<script type="text/javascript" charset="utf-8"> 
    function init() { 
     scheduler.config.xml_date="%Y-%m-%d %H:%i"; //changes date format 
     scheduler.init('scheduler_here',new Date(),"month"); // when the calendar is initialized 

     scheduler.templates.xml_date = function(value){ return new Date(value); }; 
     scheduler.load("/data", "json");  

     var dp = new dataProcessor("/data"); 
     dp.init(scheduler); 
     dp.setTransactionMode("POST", true); 
     console.log('init on index finished'); 
    } 
</script> 

<body onload="init();"> 
    <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> 
     <div class="dhx_cal_navline"> 
      <div class="dhx_cal_prev_button">&nbsp;</div> 
      <div class="dhx_cal_next_button">&nbsp;</div> 
      <div class="dhx_cal_today_button"></div> 
      <div class="dhx_cal_date"></div> 
      <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> 
      <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> 
      <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> 
     </div> 
     <div class="dhx_cal_header"> 
     </div> 
     <div class="dhx_cal_data"> 
     </div> 
    </div> 
</body> 

服務器文件與本教程相差無幾。服務器文件從app.js更改爲server.js。

//server.js 
var express = require('express'); 
var path = require('path'); 
var bodyParser = require('body-parser'); 

var db = require('mongoskin').db("mongodb://localhost:27017/testdb", { w: 0}); 
    db.bind('event'); 


var app = express(); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.bodyParser()); 


app.get('/init', function(req, res){ 
    if (err) throw err; 
    console.log('before object'); 
    db.event.insert({ 
     text:"My test event A", 
     start_date: new Date(2017,5,1), 
     end_date: new Date(2017,5,5) 
    }, console.log('first object run')); 
    db.event.insert({ 
     text:"My test event B", 
     start_date: new Date(2017,5,19), 
     end_date: new Date(2017,5,24) 
    }); 
    db.event.insert({ 
     text:"Morning event", 
     start_date: new Date(2017,5,4), 
     end_date: new Date(2017,5,4) 
    }); 
    db.event.insert({ 
     text:"One more test event", 
     start_date: new Date(2017,5,3), 
     end_date: new Date(2017,5,8), 
     color: "#DD8616" 
    }); 
    res.send("Test events were added to the database"); 
    console.log('events inserted?') 
}); 

app.get('/data', function(req, res){ 
    db.event.find().toArray(function(err, data){ 
     //set id property for all records 
     for (var i = 0; i < data.length; i++) 
      // console.log('in for loop'); 
      data[i].id = data[i]._id; 

     //output response 
     res.send(data); 
     console.log('data sent'); 
    }); 
}); 

app.listen(3000); 
console.log('listening on port 3000'); 

我能夠使用app.get('/data'路線和回調函數,並得到我的收藏印在日曆,但只在MongoDB的shell命令行插入之後。

插入數據也可以這樣說,因爲db.event.insert方法錯過了,因爲app.get('/init'路由永遠不會被觸發。我從測試中發現,使用console.logs。

我閱讀了DHTMLX Scheduler教程,網站文檔,MongoDB文檔和MongoSkin文檔。我可能完全錯過了一個明顯的解決方案,但我似乎無法找到我在這裏想念的東西,所以任何幫助,將不勝感激。謝謝。

回答

0

,但我一直沒能得到db.event.insert()工作,因爲它的路線沒有發射過。

好像你的代碼沒有爲POST /數據請求,這被稱爲當你插入/更新的客戶端/刪除項目的路線。下面是相關的代碼示例https://github.com/DHTMLX/node-scheduler-demo/blob/master/app.js#L52

在關於GET /初始化路線 - 它僅用於一些測試數據插入到數據庫,並手動調用。你可以刪除它沒有任何影響到其他應用程序

+0

嘿感謝您的答覆。 我之前有過這個帖子數據,但是因爲我無法獲得測試數據的工作而被排除在這個問題之外。 把帖子放回去並沒有改變我的結果。我提到他們的github回購。仍然不確定我做錯了什麼。 – Coffeeteer