2014-12-08 104 views
0

我正在學習Sails.js,我有一個問題。 我用「sails generate model site」命令做了一個模型對象。 和我在我的cronjob的config目錄中創建了init.js文件。每次啓動系統時,cronjob都從這個init.js開始。sails.js模型參考錯誤

這是init.js

var fs = require('fs'), 
    sails = require('sails'), 
    async = require('async'); 

exports.initSite = function() { 
    'use strict'; 
    sails.log.debug('init method start!'); 
    async.waterfall([ 
     function (callback) { 
      Site.find().exec(function (err, sites) { 
       if (err) { 
        callback(err); 
       } 

       if (sites) { 

        async.forEachSeries(sites, 
         function (siteData, callback2) { 
          siteData.remove(function (err) { 
           if (err) { 
            callback(err); 
           } 
           callback2(); 
          }); 
         }, function (err) { 
          if (err) { 
           callback(err); 
          } 
          callback(); 
         }); 
       } else { 
        callback(); 
       } 
      }); 
     }, 
     function (callback) { 
      var jsonData = fs.readFile('./urls.json', 'utf8', function (err, datas) { 
       if (err) { 
        callback(err); 
       } 
       callback(null, datas); 
      }); 
     }, 
     function (datas, callback) { 
      var urls = JSON.parse(datas); 
      for (var key in urls) { 
       var value = urls[key]; 
       var site = new Site({ 
        siteId: value.id, 
        name: value.name, 
        url: value.url, 
        category: value.category 
       }); 
       site.save(function(err){ 
        if (err) { 
         callback(err); 
        } 
       }); 
      } 
      callback(); 
     } 
    ],function(err){ 
     if (err) { 
      sails.log.error('ERROR!'); 
     } 
     sails.log.info('INIT OK'); 
    }); 
}; 

和我讀到這樣從app.js這init.js。

在app.js

require(__dirname + '/config/init').initSite(); 

,但每次我啓動應用程序,控制檯消息說的ReferenceError:網站沒有定義。

我不知道爲什麼init.js無法讀取「網站(模型對象)」。

你的建議非常感謝我。

(對不起我的英文不好...; _;)

回答

2

直到它已被「解禁」 Sailsjs不加載您的模型。您需要首先在定義了app.js文件的目錄中運行sails lift,然後才能運行此chron作業。加載帆後,所有模型都將暴露爲全局變量。升起帆後,init.js中的代碼應該從app.js中調用。

+0

謝謝你的幫助aclave1。我解決了這個問題。我在bootstrap.js中更改了我的代碼initSite()。和cronjob的作品。 – user3744647 2014-12-09 04:50:19