如何在sailsjs中实现自定义路由

时间:2015-07-21 20:07:24

标签: javascript sails.js

我试图了解sails.js。首先,我尝试生成新的api。 这是我的模型和控制器代码

Coutries.js

module.exports = {

  attributes: {
    title:{
        type:'string',
        unique:true,
        primaryKey:true
    },

    cities:{
        collection:'Cities',
        via:'country'
    }
  }
};

城市,JS

module.exports = {

  attributes: {
    title: {
      type:'string',
      unique:true,
      primaryKey:true
    },
    country:{
        model:'Countries',
        type:'String'
    },
    description: {
        type:'string'
    }
  }
};

接下来我在routes.js写了

'get /countries':'CountriesController.getAllCountries'

我需要一份国家名单。 我无法理解如何在CountriesController.js中实现函数getAllCountries。 我在tmp目录中使用本地数据库。 拜托,有人能详细了解我如何做到这一点吗? 另外为了理解告诉我如何实现addNewCountries函数和例如updateCitiesDescription。

谢谢,对不起我的英语)

2 个答案:

答案 0 :(得分:2)

对于风帆,如果您有处理路线的功能,则可以在api/controllers/CountriesController内作为方法创建。

对于路线:

'get /countries':'CountriesController.getAllCountries'

国家/地区控制器:

module.exports = {
  getAllCountries: function (req, res, next){
    return Country.getAllCountries(function success(countries){
      //handle your success logic e.g: return res.view("countries", {data: countries});
    }, function errorHandle(error){
      //error handling
    })
  }

}

国家/地区型号:

//inside your module.exports in api/models/Countries add this method
getAllCountries: function(cb, err){
  Country.find({}).then(cb).catch(err);
}

总而言之,您使用控制器方法联系模型并传递将返回适当视图的成功和错误处理函数。

答案 1 :(得分:1)

好吧,如果您的目的只是查看国家/地区列表,那么Sails就能让您满意。它提供了蓝图API,您可以直接使用它来查询数据库并将响应视为JSON。

例如,您可以致电

http://localhost:1337/countries

查看数据库中的所有国家/地区。同样,您也可以直接使用API​​执行其他查询。查找有关它的更多信息here

但是,如果你仍然想自己查询数据库以获取它,那么你到目前为止所做的工作是正确的。

在您的CountriesController中,创建一个名为“getAllCountries”的新操作

getAllCountries: function(req, res) {
   Countries.find().exec(function(err, countries){
     res.json(countries);
   });
});

您的路由主要尝试在控制器“CountriesController”中找到名为“getAllCountries”的方法,并将您的请求重定向到该操作。

接到电话后,您只需使用水线query language从数据库中获取国家/地区列表,然后将JSON返回给用户。

友好的建议,避免以复数形式命名您的模型。例如,如果您尝试维护数据库中的国家/地区和城市,请将模型命名为“Country”和“City”。