我尝试与sails.js建立postgresql连接。这是我的配置:
API /模型/ user.js的:
module.exports = {
tableName: 'user',
meta: {
schemaName: 'public'
},
identity:'sails',
connection: 'postgreSQL',
attributes: {
username:{
type:'string',
required:true,
},
password:{
type:'string',
required:true,
},
email:{
type:'email',
required:true,
},
}};
配置/ connections.js:
module.exports.connections = {
postgreSQL: {
adapter: 'sails-postgresql',
host: '127.0.0.1',
user: 'sails', // optional
password: 'pass', // optional
database: 'sails', //optional
port:5433,
}
}
配置/ models.js
module.exports.models = {
connection: 'postgreSQL',
migrate: 'safe',
};
API /控制器/ UserController.js
module.exports = {
create: function(req,res){
User.create(req.allParams()).exec(function createdUser(err, created){
if(created != undefined){
sails.log('Utilisateur créé')
res.view('User/user_created');
sails.log(req.allParams())
}
else
{
sails.log('Pas d\'utilisateur créé')
sails.log(req.allParams())
}
});
},
search: function(req,res){
sails.log("Recherche saisie:")
sails.log(req.allParams())
if(req.allParams() == undefined){
sails.log("Pas d'utilisateur recherché");
}
else {
User.find({username : {contains: req.allParams().username}}).exec(function (err, userFound){
sails.log('utilisateur trouvé');
sails.log(userFound);
return res.json(userFound);
})
}
}
};
当我解除我的应用程序时,我发送了以下请求(将发布的文章作为参数发送给#34;创建"来自UserController的操作):
http://127.0.0.1:1337/User/Subscribe?username=pierre&password=pass&email=test@test.fr
我有错误:
错误:发送500("服务器错误")响应:ReferenceError:用户是 没有定义的 在Object.create(C:\ Users \ Pierre \ Documents \ Geek \ SAILS \ hikout \ api \ controllers \ UserController.js:10:3) 在包装器(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ lodash \ lib \ index.js:3250:19) 在routeTargetFnWrapper(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ router \ bind.js:181:5) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:164:37) 在param(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:138:11) 传递(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:145:5) at nextRoute(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:100:7) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:167:11) at alwaysAllow(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ hooks \ policies \ index.js:224:11) 在routeTargetFnWrapper(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ router \ bind.js:181:5) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:164:37) 在param(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:138:11) 传递(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:145:5) at nextRoute(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:100:7) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:167:11) 在module.exports(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ hooks \ cors \ clear-headers.js:14:3) 在routeTargetFnWrapper(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ router \ bind.js:181:5) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:164:37) 在param(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:138:11) 传递(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:145:5) at nextRoute(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:100:7) 在回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:167:11)
然而,如果没有postgresSQL连接,所有工作都完美...有人知道如何解决这个问题吗?
提前感谢您的帮助。
编辑:我改变了文件路径以获得好的
答案 0 :(得分:0)
您似乎缺少User表的模型文件。
应该在api/models/User.js
我认为您只需要移动文件api/controllers/User.js
即可使其正常运行。
还将您的api/controller
文件夹重命名为api/controllers
Sails是基于惯例的,如果你把东西放在正确的地方它会毫不费力地工作。所以你的模型文件需要进入
api/models/TABLENAME.js
api/controllers/TABLENAMEController.js
如果这两个文件都存在,它将创建表并为您声明全局变量TABLENAME。
答案 1 :(得分:0)
实际上,我的第一篇文章中的文件路径是错误的。我在我的应用程序中设置了正确的。
问题在于文件config / models.js我试图使用' safe'来运行我的应用程序。我的连接模式。然而,这在第一次运行期间不起作用。好的方法是使用' drop'或者'掉落'连接模式,以便在第一次运行期间创建与模型相对应的表。
好的config / models.js文件是:
module.exports.models = {
connection: 'postgreSQL',
migrate: 'alter', // you can also use 'drop'
};
我还要像这样改变我的模型:
module.exports = {
attributes: {
username:{
type:'string',
required:true,
},
email:{
type:'string',
required:true,
},
password:{
type:'string',
required:true,
},
}
};