問題タブ [sails-mongo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Sails.js の多対多の関連付けは、作成および設定時にエラーをスローします
多対多の関連付けを使用して、あるコレクションを別のコレクションに関連付けようとすると、次のエラーが発生します。
Sails-mongo の使用:
TypeError: Cannot read property 'where' of undefined
at _afterFetchingJunctorRecords (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/waterline-cursor/cursor/populateBuffers.js:131:35)
at /Users/grant/Sites/sails/test/node_modules/sails-mongo/lib/collection.js:103:5
at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/cursor.js:172:16
at commandHandler (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/cursor.js:720:16)
at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/db.js:1874:9
at Server.Base._callHandler (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/base.js:453:41)
at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:481:18
at MongoReply.parseBody (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
at null.<anonymous> (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:439:20)
at emit (events.js:95:17)
Sails-postgresql の使用:
TypeError: Cannot convert null to object
at hasOwnProperty (native)
at utils.object.hasOwnProperty (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/lib/utils.js:28:14)
at /Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:261:11
at Array.forEach (native)
at WhereBuilder.complex (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:178:36)
at complexWhere (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:245:16)
at find (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:85:23)
at Cursor.populateBuffers [as $populateBuffers] (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/lib/adapter.js:547:31)
at Cursor.run (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-cursor/cursor/cursor.js:45:8)
at runJoins (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-cursor/index.js:51:10)
テスト プロジェクト
問題を実証し、他の人がテスト/デバッグできるように、サンプルの Sails アプリを作成しました: https://github.com/gnestor/sails-assoications-issue
再現するには:
関連付けを使用して新しいレコードを作成してみてください (Sails コンソール、Blueprints API、およびコントローラー内を使用してみました):
Event.create({source: 'http://domain.com/event/1', posted_by: {source: 'http://domain.com/feed/1'}}).exec(console.log)
Event.create({source: 'http://domain.com/event/3', venue: {source: 'http://domain.com/feed/2'}}).exec(console.log)
Event.create({source: 'http://domain.com/event/2', reposted_by: [{source: 'http://domain.com/feed/2'}, {source: 'http://domain.com/feed/4'}]}).exec(console.log)
結果
最初の 2 つ (1 対多の関連付け) は機能しますが、3 つ目 (多対多の関連付け) は機能しません。これをさまざまな方法でテストしました (Sails コンソール、Blueprints API、内部コントローラーを使用)。
Sails-disk では動作しますが、sails-mongo、sails-postgresql、sails-mysql では動作しないことに注意してください。おそらく何か間違ったことをしているのでしょう...
Sails-mongo の問題へのリンク: https://github.com/balderdashy/sails-mongo/issues/227 Sails-postgresql の問題へのリンク: https://github.com/balderdashy/sails-postgresql/issues/130
javascript - Sails.js でのデータベース環境構成の処理
私が抱えている問題は、公式ドキュメントからの次の引用に関連しています。
注 アダプターへの接続がモデルによって使用されている場合、そのアダプターへのすべての接続は、モデルが実際に使用しているかどうかに関係なく、sails.lift にロードされます。上記の例では、モデルが localMysql 接続を使用するように構成されている場合、localMysql と remoteMysql の両方が実行時に接続を試みます。したがって、接続構成を環境ごとに分割して適切な環境固有の構成ファイルに保存するか、アクティブにしたくない接続をコメントアウトすることをお勧めします。
本番サーバーの接続をどのように構成できますか?
私のconnections.jsファイルは次のようになります。
そして、私の環境設定ファイルには次のものがあります。
開発.js
production.js
運用データベース サーバーは外部サーバー上にあるため、これはローカル マシンで機能します。本番環境では、次のエラーが発生します。
接続オブジェクトから mongoDev オブジェクトを削除すると機能します。
また、adaptors.js を使用してみましたが、これは非推奨エラーが発生するだけでした。
実行時に何か違うことがありますsails lift
:
many-to-many - 喫水線/帆との関連付けのサイズを数える方法は?
セイル 0.10.5/ウォーターライン 0.10.15 を使用:
populate() (すべてのデータをロードする) を使用せずに関連付けの要素をカウントする方法という単純な質問に対する答えが見つかりません。
via との単純な many2many 関係を見てみましょう:
今、コレクションのサイズが必要です。現在、私は試しています
これにより、コレクションがロードされます。
- データの作成/読み込みを避けるために、コレクション レベルでカウント関数がありません。
- (自動生成された) 結合テーブルにアクセスして、結合でカウントクエリを直接実行する可能性はありますか?
何かのようなもの:
また
sails.js - SailsJSで特定のフィールドを取得してhtmlに表示したい
これは私のコードです。すべてのフィールドで find() を使用していたときに結果が得られましたが、エラーが発生する where 条件で find を使用したいと考えています。何を変更すればよいですか??
mongoDB からすべての管理者ユーザー名を取得したい..
htmlで
エラー :
plsは私を助けて..私はセイルズに不慣れです
sails.js - 2 つの "or" 句を含むウォーターライン クエリの where 句
両方が真でなければならない 2 つの 'or' 句を含むセイル ウォーターライン クエリを作成しようとしていますが、うまくいかないようです。これは私が試したクエリですが、「または」句の1つがその基準を満たしている場合にのみプルされます.1つではなく、両方の「または」句の基準が満たされた場合にのみ返そうとしています。これはバグですか、それとも別の方法がありますか?