問題タブ [waterline]
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 でのパスワードの確認と外部モデルの検証
私はおそらく1日くらいSailsをいじっています。私は、Sails.js で広範な検証を行うための最良の方法について頭を悩ませようとしています。
シナリオは次のとおりです。
ユーザー入力:
- 正しいメール
- すでに存在するユーザー名
- 一致しない 2 つのパスワード
望ましい結果:
要件、いくつかの重要なポイント:
- ユーザーは、入力のあらゆる側面について(最初のメッセージだけでなく)すべてのエラー メッセージを受け取ります。それらはあいまいではありません(「ユーザー名は既に使用されています」または「ユーザー名は少なくとも 4 文字の長さでなければなりません」は「無効なユーザー名」よりも優れています)。
- 組み込みモデルの検証は、一致したパスワードの確認 (SRP) を確認する責任を負わないことは明らかです。
私がする必要があると思うこと:
ユーザーコントローラー:
ユーザーマネージャー:
ユーザー: (モデル)
ユーザーバリデーター:
これはトリッキーな部分です。入力固有の検証 (パスワードの確認は一致するか?) とモデルの検証 (ユーザー名が取得され、電子メール アドレスは有効か?) を組み合わせる必要があります。
ユーザーモデルをインスタンス化し、Sails/Waterline のデータベースに保存せずに検証を実行する方法があれば、これは非常に簡単だと思いますが、そのオプションはないようです。
この問題をどのように解決しますか?ご助力ありがとうございます!
sails.js - Sails.jsで1:1の関連付けを削除するには?
現在、関連付け属性をに設定していますがnull
、これにより例外がスローされる場合がありますか?
例えば。
Profile.update({user: user.id}, {user: null}, function (err, profiles) {});
これを行う適切な方法はありますか?
node.js - Sails.js と mongodb を使用して、オブジェクト ID $in サブ配列のドキュメントを検索します
したがって、「材料」の関係があり、それは単なる ObjectId の配列であるレシピ用のモデルがあります。mongo シェルで次のクエリを実行すると、正常に動作し、すべてのデータが返されます。
ウォーターラインオームを介してsails.jsを使用すると、これをクエリする方法が実際にはありませんが、少なくとも私が見つけることができるGoogle検索を使用することはできません。したがって、ネイティブドライバーを使用しようとすると、次のようなものがあります-
問題は、コールバックで返されるデータ配列が常に空であることです。「ings」配列を確認すると、それはオブジェクト ID の配列であるため、データが返されない理由がわかりません。「find」関数でjsonオブジェクトを削除すると、すべてが返されます。Sails.jsを使用しているときに、このクエリがデータを返すようにする方法を知っている人はいますか?
javascript - 埋め込みドキュメントのモデルの「this」変数はどうですか?
私はnode.jsとsailsの初心者ですが、簡単なので気に入っています:) 実際、MongoDB ans Sails-mongoを使用してsails Framework 0.10rc3を使用しています。
ウォーターラインの貢献者は、mongodb ( https://github.com/balderdashy/sails-mongo/issues/44#issuecomment-35561040 ) のようにモデルに埋め込まれたドキュメントの大ファンではないことを知っていますが、とにかく、方法を知りたかった「this」変数はそれらで機能し、内部配列の現在の要素を取得する方法。
モデルの例を次に示します (これを ProjetSpan と呼ぶことができます)。
この場合、「これ」はどのように機能しますか? 「これ」はスパンですか (したがって、this.end は機能し、this.proj.end は機能しません)、「これ」は ProjetSpan ですか (ans したがって、this.proj.end は機能しますが、this.end は機能しません) ?
最後に、この埋め込みコンテキストで this.end (現在のスパンの変数) と this.proj.end (現在のドキュメントの関連付けの変数) を機能させる方法は?
node.js - カスタム アダプタがセイル v0.10 で失敗する
アダプタが Sails v0.10 に登録できません。docsで確認できることから、 registerCollection() は、コレクションの登録を処理することになっているアダプターメソッドです。ただし、Sails は、アダプターが現在のバージョン (0.10.0-rc4) と互換性がないことを訴えています。
エラー: これは有効な Sails/Waterline アダプターですか? 次のエラーが発生しました ::
エラー: アダプターは、Sails の現在のバージョンと互換性がありません。
コマンド経由でv0.10を使用してアダプターを作成したため、これは奇妙ですsails generate adapter
。誰でもこれについて何か考えがありますか?
sails.js - waterline createdAt ソート順への影響
私が見た症状は、オブジェクトを追加した後、 で並べ替えられたリストを表示するcreatedAt: 'desc'
と、新しいオブジェクトがリストの最後にあるのに、リストの最初にあるはずです。日付が例として表示されている"Thu Mar 06 2014 10:52:56 GMT+0000 (GMT)"
のに対し、他のオブジェクトの日付は"2014-03-06T10:52:56.875Z"
.
の行を変更するとdql.js
:
に
その後、ソート順が正しく表示されます。
サーバーを再起動した後、おそらくデータがディスクから読み込まれ、どこかで変換されたため、値は問題ありません。
これがどのように機能するか、およびウォーターラインを介してオブジェクトを追加する方法を誤解していますか?
node.js - Sails 0.10 関連付けの設定に失敗する
関連をサポートするsails@0.10.0-rc4のカスタムアダプターに取り組んでいますが、アダプターと連携して機能させるのに問題があります。私の構成は、記事と統計の間の 1 対多の関連付けです。私のモデルとアダプターは次のように設定されています。
ただし、を使用してデータを入力しようとすると、アダプターが受け取ると予想されるときにArticle.find().populate('stats').exec(console.log())
、アダプターがオプションとして取得されます。記事のリストが返されますが、別のモデル (統計) から入力されるはずのフィールドは空のリストです。{where: null}
{where: {parentId: [<some-article-id>]}}
これは、アダプターが主キーで関連モデルを検索するための適切な場所パラメーターを取得していないという事実に関連しているように感じます。これをさらにテストするために、sails-mongo アダプターを使用してテスト用の 1 対多の関係をセットアップします。この場合、アダプターは期待どおりのパラメーターを受け取り、関連付けは正常に機能しました。
.populate('stats')
適切な「場所」パラメーターをアダプターに送信しない理由について、誰かが何か考えを持っていますか?
3/7 更新
そのため、アソシエーションで何が起こるかは、 SomeModel.find() がアダプターに1回ヒットし、次に .populate('othermodel') が最初のリクエストの主キーを使用してアダプターに再度ヒットするようです。次に、両方の結果が結合されます。私の場合、アダプターに対する 2 回目のヒットは、何らかの理由で発生していません。
アップデート
元の問題は、以下のコメントに記載されている属性の命名エラーに関連していました。ただし、粒子バナナで言及されている最終的な人口ステップにはまだいくつかの問題があるようです。
最終ステップは次のとおりです。返されたすべてのクエリ操作からすべてのクエリ結果を取得し、それらをメモリ内で結合して、exec コールバックで返すことができる結果セットを構築します。
必要なすべてのクエリが実行されていることがわかりますが、エイリアスを実際に設定できていません。簡単に使用できるように、gist の形式でデバッグ出力を追加した呼び出しを次に示します: https://gist.github.com/jasonsims/9423170
javascript - Q などのライブラリをすべてのコントローラで使用できるようにする方法は?
私は Sails/Node の初心者ですが、Q ライブラリを使用してクエリを並行して実行しています。たとえば、結果を検索するコントローラー メソッドがありますが、応答オブジェクト内のレコードの総数も提供します。
Waterline はその下で Q ライブラリを使用しますが、all
メソッドを使用するにはコントローラーの上部で q ライブラリを要求する必要がありました。Q ライブラリをすべてのコントローラー/アプリ全体で利用できるようにする方法はありますか? それとも、それを必要とする各コントローラーの上部にrequireステートメントを含めるだけですか?