Javascript 如何从函数返回json?

Javascript 如何从函数返回json?,javascript,json,node.js,sails.js,Javascript,Json,Node.js,Sails.js,我现在正忙于Javascript、node js和sails。我正在努力学习如何做一些事情 现在,我有一个模拟的基本情况,我想做。我想将rest调用返回的json返回给控制器,并将其显示在网页上 到目前为止,我的情况如下: module.exports = { /** * `PersonController.scream()` */ scream: function (req, res) { function subscream(){ var pe

我现在正忙于Javascript、node js和sails。我正在努力学习如何做一些事情

现在,我有一个模拟的基本情况,我想做。我想将rest调用返回的json返回给控制器,并将其显示在网页上

到目前为止,我的情况如下:

module.exports = {


  /**
   * `PersonController.scream()`
   */
  scream: function (req, res) {
    function subscream(){
        var per = {voice: 'AAAAAAAAAAAAAAA'};
        return per;
    }
    var loudness = subscream()
    return loudness;
  }

};

log语句将json打印到控制台,但函数似乎永远不会返回。我知道我遗漏了一些明显的东西,但我对Javascript或node js了解不够,不知道该怎么称呼这个问题,所以我还不能用谷歌搜索它。很遗憾,要将JSON打印到客户端,您必须发送响应,而不是在函数中返回JSON

scream: function (req, res) {
  function subscream(){
    var per = {voice: 'AAAAAAAAAAAAAAA'};
    var perString = JSON.stringify(per);
    console.log(perString)
    return perString;
  }
  var loudness = subscream()
  res.send(loudness);
}

你怎么知道它没有返回?因为它没有显示在我用来调用函数的页面上。我去了
localhost:1337/Person/scream
,页面上什么也没显示出来。@Inglonias我们能看看你的路由器代码吗?@Li357什么是路由器代码?我没有写任何东西。我刚刚在blueprint.js文件中设置了
actions:true,
。(使用sails 1.0)你确定像对象那样调用
var cream
是个好主意吗?这就成功了。我会尽快把这个答案标对。问题是我不知道
res.send
甚至是一个选项。我在哪里可以找到更多这样的文档?请查看Node.js文档。这里是LTS版本的链接:不确定您正在查看的是哪一个Sails文档,但是在下面的示例中很难错过它。。。
module.exports = {
  /**
   * `PersonController.scream()`
   */
  scream: function (req, res) {
   function subscream(){
    return new Promise(function(resolve, reject){
     var per = {voice: 'AAAAAAAAAAAAAAA'};
        var perString = JSON.stringify(per);
        console.log(perString)
        resolve(perString);
    })
   }
    var scream = subscream()
    scream.then(function(resolvedPromise){
      res.send(resolvedPromise)
    }).catch(function(){
        res.send("error")
     })
  }
};