2016-11-07 6 views
0

データがない場合、どのようにmongoDBに挿入するのを避けることができますか?私はinsertコマンドを使うたびにデータなしで_idを作成しているからです。 例:db.collection_name.insert({}) がドキュメント内に_idを作成しています。それを避ける方法。データなしのmongoDBへの挿入を避ける

名:

{ message: 'Validator "required" failed for path name', 
    name: 'ValidatorError', 
    path: 'name', 
    type: 'required' } } 
+1

なぜあなたは ".insert({})" と呼んでいますか? MongoDBはスキーマが少なく、空のオブジェクトで "insert"を呼び出すと、_id(既定のインデックス付きフィールド)を持つ新しいドキュメントが作成されます。 MongoDBができることはまさにです:-) –

+0

実際に私はフォームを提出しています。私はフロントエンドのjavascriptの検証を行っているが、javascriptが無効になっている場合は、サーバー側でもチェックしたいと思う。私はnodeJsでmonkとexpressを使用しています。 –

+0

もっと明確になりました。私は解決策を書く –

答えて

0

統合された。 "name"プロパティが存在するかどうかを確認するだけで、検証が失敗してもドキュメントがまったく挿入されない場合はチェックできます。

https://docs.mongodb.com/v3.2/core/document-validation/

db.createCollection("contacts", 
    { validator: { $or: 
     [ 
     { phone: { $type: "string" } }, 
     { email: { $regex: /@mongodb\.com$/ } }, 
     { status: { $in: [ "Unknown", "Incomplete" ] } } 
     ] 
    } 
}) 
+0

返事をありがとうが、私はモンクを使用しています。 req.bodyが空の場合、挿入を避ける方法はありますか?値を挿入しないでください。 –

1

のMongoDB 3.2は、スキーマ検証を持っているように見えるのエラーメッセージが生成されます

var UserSchema = new Schema({ 
    name: { type: String, required: true } 
}); 

:あなたはマングースのORMを使用することができる等のバリデータを定義することができ

+0

あなたのコメントと提案をありがとうが、私はデータを送信するフォームを使用しています。私はモンクでExpress.jsを使用しています。だから、もし私に知らせてもらうための提案があれば。それは素晴らしいでしょう。前もって感謝します。 –

+0

@Vijaypandey申し訳ありませんが、なぜこれがあなたのための解決策ではないのか説明できますか? –

関連する問題