首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sails-postgresql "ReferenceError:用户未定义“

sails-postgresql "ReferenceError:用户未定义“
EN

Stack Overflow用户
提问于 2017-08-16 19:20:05
回答 2查看 1.2K关注 0票数 0

我尝试用sails.js建立postgresql连接。这是我的配置:

api/models/User.js:

代码语言:javascript
复制
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,
},
}};

config/connections.js:

代码语言:javascript
复制
module.exports.connections = {
postgreSQL: {
      adapter: 'sails-postgresql',
      host: '127.0.0.1',
      user: 'sails', // optional
      password: 'pass', // optional
      database: 'sails', //optional
      port:5433,
    }
}

config/models.js s.js

代码语言:javascript
复制
module.exports.models = {
  connection: 'postgreSQL',
  migrate: 'safe',    
};

api/controllers/UserController.js

代码语言:javascript
复制
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);
    })
    }
    }
};

当我打开我的应用程序时,我发送以下请求(将post文档作为来自UserController的“创建”操作的参数发送):

http://127.0.0.1:1337/User/Subscribe?username=pierre&password=pass&email=test@test.fr

我有一个错误:

错误:发送500 (“服务器错误”)响应:在包装器(C:\Users\Pierre\Documents\Geek\SAILS\hikout\api\controllers\UserController.js:10:3) at (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\lodash\lib\index.js:3250:19) at routeTargetFnWrapper (C:\Users\Pierre\AppData\Roaming\npm\node_ )的Object.create上未定义用户(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) at pass (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) at callbacks (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\index.联合材料:167:11) (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\lib\hooks\policies\index.js:224:11) at routeTargetFnWrapper (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:181:5) at callbacks (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\(C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\index.js:138:11) at pass (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\漫游\npm\节点_modules\sails\node_modules\@sailshq\express\lib\router\index.js:100:7) at callback (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\index.js:167:11) at module.exports (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\lib\hooks\cors\clear-headers.js:14:3) at routeTargetFnWrapper(C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:181:5) at callback (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) at nextRoute (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\index.js:100:7) at callbacks (C:\Users\Pierre\AppData\Roaming\npm\node_modules\sails\node_modules\@sailshq\express\lib\router\index.js:167:11)

然而,没有postgresSQL连接,所有这些都能完美地工作.有人知道怎么解决这个问题吗?

提前感谢您的帮助。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-21 21:07:05

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

问题出现在文件config/models.js中。我试着用safe模式运行我的应用程序来连接。但是,这在第一次运行时不起作用。好的方法是为连接使用alterdrop模式,以便在第一次运行时创建与模型相对应的表。

好的config/models.js文件是:

代码语言:javascript
复制
module.exports.models = {
    connection: 'postgreSQL',
    migrate: 'alter',  // you can also use 'drop' 
};

我还不得不改变我的模型,使之看起来像这样:

代码语言:javascript
复制
module.exports = {
    attributes: {
        username: {
            type: 'string',
            required: true,
        },
        email: {
            type:'string',
            required:true,
        },
        password: {
            type: 'string',
            required: true,
        },
    }
};
票数 0
EN

Stack Overflow用户

发布于 2017-08-18 19:43:52

看起来您丢失了用户表的模型文件。

应该在api/models/User.js

我认为您只需要移动文件api/controllers/User.js就可以工作了。

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

帆是以惯例为基础的,如果你把东西放在正确的地方,它就不会大惊小怪地工作。所以你的模型文件需要进入

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45721402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档