2014-12-08 101 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