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

Javascript 如何在sailsjs中实现自定义路由,javascript,sails.js,Javascript,Sails.js,我正在努力理解sails.js。首先,我尝试生成新的api。 这是我的模型和控制器代码 Coutries.js module.exports = { attributes: { title:{ type:'string', unique:true, primaryKey:true }, cities:{ collection:'Cities', via:'country' }

我正在努力理解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


感谢并对我的英语表示歉意)

对于sails,如果你有一个函数来处理你的路线,你可以在
api/controllers/countriescocontroller
中创建它作为一种方法

对于路线:

'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);
}
国家控制器:

'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);
}
国家/地区型号:

'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);
}

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

如果您的目的只是查看国家/地区列表,那么Sails已经涵盖了您。它提供了BlueprintAPI,您可以直接使用它来查询数据库并将响应视为JSON

例如,你可以打电话

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

但是,如果您仍然希望自己查询数据库以掌握诀窍,那么到目前为止您所做的工作是正确的

在您的国家/地区控制器中,创建一个名为“getAllCountries”的新操作

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

收到调用后,只需使用waterline从数据库中获取国家列表,并将JSON返回给用户


友好的建议是,不要用复数来命名你的模特。例如,如果您试图在数据库中维护国家/地区和城市,请将模型命名为“国家/地区”和“城市”。

谢谢。我明白这一点。实际上我不理解这部分的实现:return Countries.findAll({//query details},