2016-03-10 139 views
0

我正在模拟使用Mockaroo API的数据。然后我想在我的数据库中每秒发布一次。因此,当我使用Postman测试post方法时效果很好,但是当我尝试使用setInterval()时,它不起作用,并且不显示任何错误。我发现我的数据库是空的,所以它不会发布数据。 这是我的代码:Node.js:setInterval函数不起作用

function Post(){ 
/*router.post('/tu',*/ 
function P(req, res, next) { 
    var result; 
var inde=["Ariana","Beja"]; 
    for (var o=0; o<inde.length; o++) { 

    client.generate({ 
    count: 2, 
    schema: inde[o]+' indexes' 
}).then(function(records) { 
    for (var i=0; i<records.length; i++) { 
     var record = records[i]; 
     var c = new models.pollution(record); 
     c.save(function(err, records){ 
     if(err) res.json({error: err}); 
     result=records; 
     });   
    } 
}) 
} 
res.json(result); 
console.log("success"); 
} 
}; 
setInterval(Post,1000); 

感谢您的帮助。

+3

'Post'函数没有做任何事情。它只是定义了一个函数'P'并且从不调用它。 – Quentin

+0

那么我该如何让它工作? –

+0

您可以将函数P作为IFFY(立即调用的函数表达式)函数 – Darshan

回答

1

看起来您并未调用您在“POST”函数内定义的函数“P”。您可以将函数P作为 IFFY(立即调用的函数表达式)函数。

function Post(){ 
    /*router.post('/tu',*/ 
    (function P(req, res, next){ 
     var result; 
     var inde=["Ariana","Beja"]; 
     for (var o=0; o<inde.length; o++) { 

      client.generate({ 
        count: 2, 
        schema: inde[o]+' indexes' 
      }).then(function(records) { 
       for (var i=0; i<records.length; i++) { 
        var record = records[i]; 
        var c = new models.pollution(record); 
        c.save(function(err, records){ 
          if(err) res.json({error: err}); 
          result=records; 
        });   
       } 
      }) 
     } 
     res.json(result); 
     console.log("success"); 
    })(req, res, next); 
}; 
setInterval(Post,1000); 
+0

感谢您的回复,但是当我确实像您提议的那样得到时:无法读取未定义的属性'json'。 –

+0

@RaoufHammami我已经更新了答案。现在检查 – Darshan

+0

同样的问题,但这次req未定义 –