2017-08-16 20 views
0

私はsails.jsでpostgresql接続を設定しようとしています。ここに私の設定は次のとおりです。sails-postgresql "ReferenceError:ユーザーが定義されていません"

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, 
}, 
}}; 

のconfig/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, 
    } 
} 

のconfig/models.js

module.exports.models = { 
    connection: 'postgreSQL', 
    migrate: 'safe',  
}; 

APIは、 /controllers/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); 
    }) 
    } 
    } 
}; 

私は私のアプリを持ち上げ、と私は(UserControllerでから、 "作成" アクションのためのparamsとしてポストagumentを送信する)、次のリクエストを送信します。

error: Sending 500 ("Server Error") response: ReferenceError: User is not defined at Object.create (C:\Users\Pierre\Documents\Geek\SAILS\hikout\api\controllers\UserController.js:10:3) at wrapper (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_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\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.js:167:11) at alwaysAllow (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\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.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 callbacks (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.js:167:11)

http://127.0.0.1:1337/User/Subscribe?username=pierre&password=pass&[email protected]

私はエラーを持っています

しかし、すべてpostgresSQL接続なしで完璧に動作します...誰かがこれを解決する方法を知っていますか?

ありがとうございました。

編集:私はあなたのユーザーテーブルのモデルファイルが欠落しているように見えます良いもの

答えて

0

実際、最初の投稿でファイルのパスが間違っていました。私はアプリで正しいものを設定しました。

問題はファイルconfig/models.jsにありました。接続に「安全」モードでアプリケーションを実行しようとしました。しかし、これは最初の実行中は機能しません。最初の実行時にモデルに対応するテーブルを作成するために、接続に「ドロップ」または「ドロップ」モードを使用するのが良い方法です。

良いの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, 
     }, 
    } 
}; 
0

を取得するには、ファイルのパスを変更しました。

それは私はあなたはそれを動作させるために、ファイルapi/controllers/User.jsを移動する必要があると思うapi/models/User.js

にする必要があります。

はまたapi/controllers

帆であるためにあなたのapi/controllerフォルダの名前を変更し、あなたが正しい場所に物を置くならば、それは大騒ぎせずに動作しますが、慣例に基づいています。だからあなたのモデルファイルは、これらのファイルの両方が存在する場合、それは表を作成し、あなたのためのグローバル変数を宣言しますTABLENAME

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

に行く必要があります。

関連する問題