[解決済み] フィールドリスト」の不明な列 '*.createdAt' を順番に処理する。
2022-07-31 18:05:17
質問
フィールドリスト」に不明なカラム 'userDetails.createdAt' が表示されます。 アソシエーションでフェッチしようとすると
使用方法
findAll
を使うとうまくいきます。
私のコードは以下の通りです。
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
});
var user = sequelize.define('user', {
email: Sequelize.STRING,
password: Sequelize.STRING
});
user.hasOne(userDetails, {foreignKey: 'userId'});
user.findAll({include: [userDetails] }).success(function(user) {
console.log(user)
});
どのように解決するのですか?
sequelizeでタイムスタンプを有効にしているが、DBの実際のテーブル定義にタイムスタンプのカラムが含まれていないことが原因だと思われます。
user.findを実行すると、次のようになります。
SELECT user.*
で、実際に持っているカラムだけを取ります。しかし、結合すると、結合されたテーブルの各カラムはエイリアスになり、次のようなクエリが作成されます。
SELECT `users`.*, `userDetails`.`userId` AS `userDetails.userId`,`userDetails`.`firstName` AS `userDetails.firstName`,`userDetails`.`lastName` AS `userDetails.lastName`, `userDetails`.`birthday` AS `userDetails.birthday`, `userDetails`.`id` AS `userDetails.id`, `userDetails`.`createdAt` AS `userDetails.createdAt`, `userDetails`.`updatedAt` AS `userDetails.updatedAt` FROM `users` LEFT OUTER JOIN `userDetails` AS `userDetails` ON `users`.`id` = `userDetails`.`userId`;
修正方法としては、userDetailsモデルのどちらかでタイムスタンプを無効化することです。
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
}, {
timestamps: false
});
または全モデルに対して
var sequelize = new Sequelize('sequelize_test', 'root', null, {
host: "127.0.0.1",
dialect: 'mysql',
define: {
timestamps: false
}
});
関連
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】MongooseでEnumを作成し使用する方法
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] バルク更新を行う。
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] npm WARN package.json: リポジトリフィールドがありません
-
[解決済み] Node.jsでディレクトリに存在するすべてのファイル名のリストを取得する方法は?
-
[解決済み】クエリ実行時にSequelizeからコンソールにSQLが出力されないようにするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?