Javascript Sails.js:services函数调用两次

Javascript Sails.js:services函数调用两次,javascript,node.js,express,sails.js,Javascript,Node.js,Express,Sails.js,刚开始了解sails.jsservices的工作原理,但我调用了两次services函数 这是我的service.js module.exports = { getuserFavouriteArray:function (callback) { return callback('ok from service'); } } 我从我的控制器调用了这个服务 FavouriteService.getuserFavouriteArray(function (respon

刚开始了解sails.js
services
的工作原理,但我调用了两次services函数

这是我的service.js

module.exports = {
    getuserFavouriteArray:function (callback) {
        return callback('ok from service');
    }
}
我从我的控制器调用了这个服务

FavouriteService.getuserFavouriteArray(function (response) {
                console.log(response);
            });
它工作正常,但是我得到了
console.log(响应)消息两次

ok from service
ok from service
更新

深入研究这个问题,最终发现它不是服务的问题,因为控制器执行了多次,所以我将所有路由隐藏在我的
route.js
中,并使用单个路由进行测试,但我仍然让控制器执行了两次

function (req,res) {


        var sql = "SELECT a.title,a.image_name,a.id as art_id,COUNT(b.art_id) AS 'total_comments',COUNT(d.art_id) as total_favourite,a.base_price, a.total_share,CONCAT(c.first_name,' ',c.last_name) as artist_name FROM cushbu_art a LEFT JOIN cushbu_art_comments b ON a.id = b.art_id LEFT JOIN cushbu_mark_user_favorites d ON a.id = d.art_id LEFT JOIN cushbu_users c ON a.artist_id=c.id  WHERE  a.status=$1 AND a.category=$2 GROUP BY a.id";
        sequelize.query(sql,{bind:[1,req.param('category')],type: Sequelize.QueryTypes.SELECT}).then(function (art) {

            FavouriteService.getuserFavouriteArray(function (response) {
                console.log(response);
            });


            res.view('arts/list-art-with-category',{'arts':art,category:req.param('category')});
        }).catch(function (err) {

            res.json({
                'status':false,
                'message':'An unexpected error in DB',
                'err':err
            })
        })

    }
路线

GET /:category': {controller:'ArtlistController',action:'breadCumbsCategory'}

我用一个新的服务文件和控制器文件尝试了您上面所说的,但无法复制它。我在控制台里只得到一次日志。你能再详细一点吗?也许你可以提供完整的代码,你使用这个控制器和路由等方法。我也测试了单路由,它仍然执行多次你的控制器方法需要很长时间来执行吗?(在回答之前)。如果是这样,浏览器可能会再次尝试,并重新触发该方法。另一个想法是,这是由表单提交触发的吗?可能您无意中提交了两次(一次是通过表单html自动完成的,一次是通过ajax或其他方式完成的)长时间上载,解决方案通常是在上载完成之前从控制器方法发回响应。虽然这很复杂,但这意味着当上传完成时,让网页做出反应将是一件困难的事情——涉及sockets或sails.io或其他内容。但是对于初学者来说,记住调用
res.send(…)
并不会停止执行,之后可以在控制器中执行繁重的上传工作。