mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	Add fineOne, fix insertMany
This commit is contained in:
		| @@ -126,12 +126,12 @@ | ||||
|         <select type="text" id="node-input-operation" style="display: inline-block; vertical-align: top;"> | ||||
|             <option value="store" data-i18n="mongodb.operation.save"></option> | ||||
|             <option value="insert" data-i18n="mongodb.operation.insert"></option> | ||||
|             <option value="update" data-i18n="mongodb.operation.update"></option> | ||||
|             <option value="delete" data-i18n="mongodb.operation.remove"></option> | ||||
|             <option value="insertOne" data-i18n="mongodb.operation.insertOne"></option> | ||||
|             <option value="insertMany" data-i18n="mongodb.operation.insertMany"></option> | ||||
|             <option value="update" data-i18n="mongodb.operation.update"></option> | ||||
|             <option value="updateOne" data-i18n="mongodb.operation.updateOne"></option> | ||||
|             <option value="updateMany" data-i18n="mongodb.operation.updateMany"></option> | ||||
|             <option value="delete" data-i18n="mongodb.operation.remove"></option> | ||||
|             <option value="deleteOne" data-i18n="mongodb.operation.deleteOne"></option> | ||||
|             <option value="deleteMany" data-i18n="mongodb.operation.deleteMany"></option> | ||||
|         </select> | ||||
| @@ -156,6 +156,7 @@ | ||||
|         <input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name"> | ||||
|     </div> | ||||
|     <div class="form-tips" id="node-warning" style="display: none"><span data-i18n="[html]mongodb.tip"></span></div> | ||||
|     <div class="form-tips" id="node-insertMany-warning" style="display: none"><span data-i18n="[html]mongodb.insertMany-tips"></span></div> | ||||
| </script> | ||||
|  | ||||
| <script type="text/html" data-help-name="mongodb out"> | ||||
| @@ -190,15 +191,24 @@ | ||||
|         $("#node-input-operation").change(function () { | ||||
|             var id = $("#node-input-operation option:selected").val(); | ||||
|  | ||||
|             if (id === "update" || id === "updateOne" || id === "updateMany") { | ||||
|             if (id === "update") { | ||||
|                 $(".node-input-payonly").hide(); | ||||
|                 $(".node-input-upsert, .node-input-multi").show(); | ||||
|             } else if (id === "updateOne" || id === "updateMany") { | ||||
|                 $(".node-input-payonly, .node-input-multi").hide(); | ||||
|                 $(".node-input-upsert").show(); | ||||
|             } else if (id === "delete" || id === "deleteOne" || id === "deleteMany") { | ||||
|                 $(".node-input-payonly, .node-input-upsert, .node-input-multi").hide(); | ||||
|             } else { | ||||
|                 $(".node-input-payonly").show(); | ||||
|                 $(".node-input-upsert, .node-input-multi").hide(); | ||||
|             } | ||||
|  | ||||
|             if (id === "insertMany") { | ||||
|                 $("#node-insertMany-warning").show(); | ||||
|             } else { | ||||
|                 $("#node-insertMany-warning").hide(); | ||||
|             } | ||||
|         }); | ||||
|  | ||||
|         $("#node-input-collection").change(function () { | ||||
| @@ -250,6 +260,7 @@ | ||||
|     <div class="form-row"> | ||||
|         <label for="node-input-operation"><i class="fa fa-wrench"></i> <span data-i18n="mongodb.label.operation"></span></label> | ||||
|         <select type="text" id="node-input-operation" style="display: inline-block; vertical-align: top;"> | ||||
|             <option value="findOne" data-i18n="mongodb.operation.findOne"></option> | ||||
|             <option value="find" data-i18n="mongodb.operation.find"></option> | ||||
|             <option value="count" data-i18n="mongodb.operation.count"></option> | ||||
|             <option value="aggregate" data-i18n="mongodb.operation.aggregate"></option> | ||||
| @@ -267,6 +278,9 @@ | ||||
|     <p>Find queries a collection using the <code>msg.payload</code> as the query statement as per the .find() function. | ||||
|     Optionally, you may also (via a function) set a <code>msg.projection</code> object to constrain the returned | ||||
|     fields, a <code>msg.sort</code> object, a <code>msg.limit</code> number and a <code>msg.skip</code> number.</p> | ||||
|     <p>FindOne queries a collection using the <code>msg.payload</code> as the query statement and returns a single object. | ||||
|     Optionally, you may also (via a function) set a <code>msg.projection</code> object to constrain the returned | ||||
|     fields, a <code>msg.sort</code> object, and a <code>msg.skip</code> number.</p> | ||||
|     <p>Count returns a count of the number of documents in a collection or matching a query using the | ||||
|     <code>msg.payload</code> as the query statement.</p> | ||||
|     <p>Aggregate provides access to the aggregation pipeline using the <code>msg.payload</code> as the pipeline array.</p> | ||||
|   | ||||
| @@ -154,7 +154,7 @@ module.exports = function(RED) { | ||||
|                         else if (node.operation === "insertMany") { | ||||
|                             const options = {} | ||||
|  | ||||
|                             coll.insertMany(msg.payload, options, function(err,item) { | ||||
|                             coll.insertMany(msg.payload.values, options, function(err,items) { | ||||
|                                 if (err) { | ||||
|                                     node.error(err,msg); | ||||
|                                 } | ||||
| @@ -215,8 +215,7 @@ module.exports = function(RED) { | ||||
|                             var query = msg.query || {}; | ||||
|                             var payload = msg.payload || {}; | ||||
|                             var options = { | ||||
|                                 upsert: node.upsert, | ||||
|                                 multi: node.multi | ||||
|                                 upsert: node.upsert | ||||
|                             }; | ||||
|                             if (ObjectID.isValid(msg.query._id)) { | ||||
|                                 msg.query._id = new ObjectID(msg.query._id); | ||||
| @@ -231,8 +230,7 @@ module.exports = function(RED) { | ||||
|                             var query = msg.query || {}; | ||||
|                             var payload = msg.payload || []; | ||||
|                             var options = { | ||||
|                                 upsert: node.upsert, | ||||
|                                 multi: node.multi | ||||
|                                 upsert: node.upsert | ||||
|                             }; | ||||
|                             if (ObjectID.isValid(msg.query._id)) { | ||||
|                                 msg.query._id = new ObjectID(msg.query._id); | ||||
| @@ -345,6 +343,34 @@ module.exports = function(RED) { | ||||
|                                 } | ||||
|                             }); | ||||
|                         } | ||||
|                         else if (node.operation === "findOne") { | ||||
|                             selector = ensureValidSelectorObject(msg.payload); | ||||
|                             var skip = msg.skip; | ||||
|                             if (typeof skip === "string" && !isNaN(skip)) { | ||||
|                                 skip = Number(skip); | ||||
|                             } else if (typeof skip === "undefined") { | ||||
|                                 skip = 0; | ||||
|                             } | ||||
|  | ||||
|                             const options = { | ||||
|                                 projection: msg.projection || {}, | ||||
|                                 sort: msg.sort, | ||||
|                                 skip, | ||||
|                             } | ||||
|  | ||||
|                             coll.findOne(selector, options, function (err, item) { | ||||
|                                 if (err) { | ||||
|                                     node.error(err); | ||||
|                                 } | ||||
|                                 else { | ||||
|                                     msg.payload = item; | ||||
|                                     delete msg.projection; | ||||
|                                     delete msg.sort; | ||||
|                                     delete msg.skip; | ||||
|                                     node.send(msg); | ||||
|                                 } | ||||
|                             }); | ||||
|                         } | ||||
|                         else if (node.operation === "count") { | ||||
|                             selector = ensureValidSelectorObject(msg.payload); | ||||
|                             coll.count(selector, function(err, count) { | ||||
|   | ||||
| @@ -48,6 +48,14 @@ Optionally, you may also (via a function) set | ||||
| - a `msg.limit` number, | ||||
| - a `msg.skip` number. | ||||
|  | ||||
| *FindOne* is similar to *Find* but only returns a singular object that matches the query from the `msg.payload`. | ||||
|  | ||||
| Optionally, you may also (via a function) set | ||||
|  | ||||
| - a `msg.projection` object to constrain the returned fields, | ||||
| - a `msg.sort` object. | ||||
| - a `msg.skip` number. | ||||
|  | ||||
| *Count* returns a count of the number of documents in a collection or matching a | ||||
| query using the `msg.payload` as the query statement. | ||||
|  | ||||
|   | ||||
| @@ -21,9 +21,12 @@ | ||||
|             "insertOne": "insertOne", | ||||
|             "insertMany": "insertMany", | ||||
|             "update": "update", | ||||
|             "updateOne": "updateOne", | ||||
|             "updateMany": "updateMany", | ||||
|             "remove": "remove", | ||||
|             "deleteOne": "deleteOne", | ||||
|             "deleteMany": "deleteMany", | ||||
|             "findOne": "findOne", | ||||
|             "find": "find", | ||||
|             "count": "count", | ||||
|             "aggregate": "aggregate" | ||||
| @@ -34,6 +37,7 @@ | ||||
|             "error": "error" | ||||
|         }, | ||||
|         "tip": "<b> Tip:</b> If no collection is set, ensure <code>msg.collection</code> will contain the collection name", | ||||
|         "insertMany-tips": "<b> Tip:</b> When using <code>insertMany</code> ensure your <code>msg.payload.values</code> is an array of objects that you want to insert.", | ||||
|         "errors": { | ||||
|             "nocollection": "No collection defined", | ||||
|             "missingconfig": "missing mongodb configuration" | ||||
|   | ||||
| @@ -21,9 +21,12 @@ | ||||
|             "insertOne": "insertOne", | ||||
|             "insertMany": "insertMany", | ||||
|             "update": "update", | ||||
|             "updateOne": "updateOne", | ||||
|             "updateMany": "updateMany", | ||||
|             "remove": "remove", | ||||
|             "deleteOne": "deleteOne", | ||||
|             "deleteMany": "deleteMany", | ||||
|             "findOne": "findOne", | ||||
|             "find": "find", | ||||
|             "count": "count", | ||||
|             "aggregate": "aggregate" | ||||
| @@ -34,6 +37,7 @@ | ||||
|             "error": "エラー" | ||||
|         }, | ||||
|         "tip": "<b> Tip:</b> コレクションが設定されていない場合、 <code>msg.collection</code>がコレクション名として使われます。", | ||||
|         "insertMany-tips": "<b> Tip:</b> 使用する場合 <code>insertMany</code> あなたの <code>msg.payload.values</code> 挿入するオブジェクトの配列です。", | ||||
|         "errors": { | ||||
|             "nocollection": "コレクションが定義されていません", | ||||
|             "missingconfig": "mongodbの設定がみつかりません" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user