首页 文章

sails-postgresql“ReferenceError:用户未定义”

提问于
浏览
0

我尝试与sails.js Build 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);
    })
    }
    }
};

当我解除我的应用程序时,我发送以下请求(将发布的文章作为params从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 )在routeTargetFnWrapper(C:\ Users \ Pierre \ AppData \)的包装器(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ lodash \ lib \ index.js:3250:19)在回调时漫游\ 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)at 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)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 \ EX在routeTargetFnWrapper的alwaysAllow(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ lib \ hooks \ policies \ index.js:224:11)中按\ lib \ router \ index.js:167:11)回调(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:164:37)at param(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:138:11)在nextRoute传递(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:145:5)回调中的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)在routeTargetFnW回调中的说唱歌手(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)at param(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:138:11)在nextRoute传递(C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:145:5) (C:\ Users \ Pierre \ AppData \ Roaming \ npm \ node_modules \ sails \ node_modules \ @sailshq \ express \ lib \ router \ index.js:100:7)在回调中(C:\ Users \ Pierre \ AppData \ Roaming) \故宫\ node_modules \帆\ node_modules \ @sailshq \表现\ LIB \路由器\ index.js:167:11)

然而,没有postgresSQL连接,所有工作都完美...有人知道如何解决这个问题吗?

提前感谢您的帮助 .

编辑:我改变了文件路径以获得好的

2 回答

  • 0

    您似乎缺少User表的模型文件 .

    它应该在 api/models/User.js

    我想你只需要移动文件 api/controllers/User.js 就可以了 .

    同时将 api/controller 文件夹重命名为 api/controllers

    Sails是基于 Session 的,如果你把东西放在正确的地方,它将毫不费力地工作 . 所以你的模型文件需要进入

    api/models/TABLENAME.js api/controllers/TABLENAMEController.js

    如果这两个文件都存在,它将创建表并为您声明全局变量TABLENAME .

  • 0

    实际上,我的第一篇文章中的文件路径是错误的 . 我在我的应用程序中设置了正确的 .

    问题是在文件config / models.js中我试图以“安全”模式运行我的应用程序以进行连接 . 但是,这在第一次运行期间不起作用 . 好的方法是使用“drop”或“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,
            },
        }
    };
    

相关问题