17

私は続編とNode.jsが初めてです。
テストの続編用にコーディングしたのですが、「ER_NO_SUCH_TABLE : テーブル 'db.node_tests' が存在しません」という
エラーが発生しました 。エラーは非常に単純です。ただし、「 node_test」テーブル
からデータを取得したいと考えています。 続編は's'文字を追加すると思います。

私のソースコードがあります。

var Sequelize = require('sequelize');

var sequelize = new Sequelize('db', 'user', 'pass');
var nodeTest = sequelize.define('node_test',
        { uid: Sequelize.INTEGER 
         , val: Sequelize.STRING} );

nodeTest.find({where:{uid:'1'}})
    .success(function(tbl){
        console.log(tbl);
    });

すでにテーブル「node_test」を作成し、mysql クライアントを使用してデータを挿入しました。

使い方を誤解していませんか?

4

5 に答える 5

16

私は自分の質問の答えを見つけました。

次の Sequelize メソッド オプションを追加しました。{define:{freezeTableName:true}}

次に、テーブル名の後に「s」文字を追加しないで続編します。

于 2012-12-22T23:10:01.133 に答える
12

答えはうまくいきますが、最近でtableNameはモデルを宣言するときにオプションを使用することをお勧めします。

sequelize.define('node_test', { 
  uid: Sequelize.INTEGER,
  val: Sequelize.STRING
}, {
   tableName: 'node_test'
});

http://docs.sequelizejs.com/manual/tutorial/models-definition.html

于 2013-11-27T06:49:43.140 に答える
6

Sequelize は、渡されたモデル名の複数形をデフォルトで使用しています。そのため、テーブル「node_tests」または「NodeTests」が検索されます。また、必要に応じてテーブルを作成することもできます。

nodeTest.sync().success(function() {
  // here comes your find command.
})

テーブルがまだ存在しない場合、Sync はテーブルを作成しようとします。を使用して、既存のテーブルを削除し、新しいテーブルを最初から作成することもできますsync({ force: true })。何が起こっているかの詳細については、コマンド ラインの SQL コマンドを確認してください。

于 2012-12-22T13:41:55.003 に答える
1

私の場合はケースが原因でした。私が持っていました:

sequelize.define('User', {

正しい方法は、小文字を使用することです。

sequelize.define('user', {
于 2020-04-20T21:25:56.177 に答える