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:
parent
a829d66d7d
commit
c7919501ca
@ -126,12 +126,12 @@
|
|||||||
<select type="text" id="node-input-operation" style="display: inline-block; vertical-align: top;">
|
<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="store" data-i18n="mongodb.operation.save"></option>
|
||||||
<option value="insert" data-i18n="mongodb.operation.insert"></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="insertOne" data-i18n="mongodb.operation.insertOne"></option>
|
||||||
<option value="insertMany" data-i18n="mongodb.operation.insertMany"></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="updateOne" data-i18n="mongodb.operation.updateOne"></option>
|
||||||
<option value="updateMany" data-i18n="mongodb.operation.updateMany"></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="deleteOne" data-i18n="mongodb.operation.deleteOne"></option>
|
||||||
<option value="deleteMany" data-i18n="mongodb.operation.deleteMany"></option>
|
<option value="deleteMany" data-i18n="mongodb.operation.deleteMany"></option>
|
||||||
</select>
|
</select>
|
||||||
@ -156,6 +156,7 @@
|
|||||||
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
|
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
|
||||||
</div>
|
</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-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>
|
||||||
|
|
||||||
<script type="text/html" data-help-name="mongodb out">
|
<script type="text/html" data-help-name="mongodb out">
|
||||||
@ -190,15 +191,24 @@
|
|||||||
$("#node-input-operation").change(function () {
|
$("#node-input-operation").change(function () {
|
||||||
var id = $("#node-input-operation option:selected").val();
|
var id = $("#node-input-operation option:selected").val();
|
||||||
|
|
||||||
if (id === "update" || id === "updateOne" || id === "updateMany") {
|
if (id === "update") {
|
||||||
$(".node-input-payonly").hide();
|
$(".node-input-payonly").hide();
|
||||||
$(".node-input-upsert, .node-input-multi").show();
|
$(".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") {
|
} else if (id === "delete" || id === "deleteOne" || id === "deleteMany") {
|
||||||
$(".node-input-payonly, .node-input-upsert, .node-input-multi").hide();
|
$(".node-input-payonly, .node-input-upsert, .node-input-multi").hide();
|
||||||
} else {
|
} else {
|
||||||
$(".node-input-payonly").show();
|
$(".node-input-payonly").show();
|
||||||
$(".node-input-upsert, .node-input-multi").hide();
|
$(".node-input-upsert, .node-input-multi").hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (id === "insertMany") {
|
||||||
|
$("#node-insertMany-warning").show();
|
||||||
|
} else {
|
||||||
|
$("#node-insertMany-warning").hide();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#node-input-collection").change(function () {
|
$("#node-input-collection").change(function () {
|
||||||
@ -250,6 +260,7 @@
|
|||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-operation"><i class="fa fa-wrench"></i> <span data-i18n="mongodb.label.operation"></span></label>
|
<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;">
|
<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="find" data-i18n="mongodb.operation.find"></option>
|
||||||
<option value="count" data-i18n="mongodb.operation.count"></option>
|
<option value="count" data-i18n="mongodb.operation.count"></option>
|
||||||
<option value="aggregate" data-i18n="mongodb.operation.aggregate"></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.
|
<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
|
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>
|
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
|
<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>
|
<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>
|
<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") {
|
else if (node.operation === "insertMany") {
|
||||||
const options = {}
|
const options = {}
|
||||||
|
|
||||||
coll.insertMany(msg.payload, options, function(err,item) {
|
coll.insertMany(msg.payload.values, options, function(err,items) {
|
||||||
if (err) {
|
if (err) {
|
||||||
node.error(err,msg);
|
node.error(err,msg);
|
||||||
}
|
}
|
||||||
@ -215,8 +215,7 @@ module.exports = function(RED) {
|
|||||||
var query = msg.query || {};
|
var query = msg.query || {};
|
||||||
var payload = msg.payload || {};
|
var payload = msg.payload || {};
|
||||||
var options = {
|
var options = {
|
||||||
upsert: node.upsert,
|
upsert: node.upsert
|
||||||
multi: node.multi
|
|
||||||
};
|
};
|
||||||
if (ObjectID.isValid(msg.query._id)) {
|
if (ObjectID.isValid(msg.query._id)) {
|
||||||
msg.query._id = new ObjectID(msg.query._id);
|
msg.query._id = new ObjectID(msg.query._id);
|
||||||
@ -231,8 +230,7 @@ module.exports = function(RED) {
|
|||||||
var query = msg.query || {};
|
var query = msg.query || {};
|
||||||
var payload = msg.payload || [];
|
var payload = msg.payload || [];
|
||||||
var options = {
|
var options = {
|
||||||
upsert: node.upsert,
|
upsert: node.upsert
|
||||||
multi: node.multi
|
|
||||||
};
|
};
|
||||||
if (ObjectID.isValid(msg.query._id)) {
|
if (ObjectID.isValid(msg.query._id)) {
|
||||||
msg.query._id = new ObjectID(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") {
|
else if (node.operation === "count") {
|
||||||
selector = ensureValidSelectorObject(msg.payload);
|
selector = ensureValidSelectorObject(msg.payload);
|
||||||
coll.count(selector, function(err, count) {
|
coll.count(selector, function(err, count) {
|
||||||
|
@ -48,6 +48,14 @@ Optionally, you may also (via a function) set
|
|||||||
- a `msg.limit` number,
|
- a `msg.limit` number,
|
||||||
- a `msg.skip` 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
|
*Count* returns a count of the number of documents in a collection or matching a
|
||||||
query using the `msg.payload` as the query statement.
|
query using the `msg.payload` as the query statement.
|
||||||
|
|
||||||
|
@ -21,9 +21,12 @@
|
|||||||
"insertOne": "insertOne",
|
"insertOne": "insertOne",
|
||||||
"insertMany": "insertMany",
|
"insertMany": "insertMany",
|
||||||
"update": "update",
|
"update": "update",
|
||||||
|
"updateOne": "updateOne",
|
||||||
|
"updateMany": "updateMany",
|
||||||
"remove": "remove",
|
"remove": "remove",
|
||||||
"deleteOne": "deleteOne",
|
"deleteOne": "deleteOne",
|
||||||
"deleteMany": "deleteMany",
|
"deleteMany": "deleteMany",
|
||||||
|
"findOne": "findOne",
|
||||||
"find": "find",
|
"find": "find",
|
||||||
"count": "count",
|
"count": "count",
|
||||||
"aggregate": "aggregate"
|
"aggregate": "aggregate"
|
||||||
@ -34,6 +37,7 @@
|
|||||||
"error": "error"
|
"error": "error"
|
||||||
},
|
},
|
||||||
"tip": "<b> Tip:</b> If no collection is set, ensure <code>msg.collection</code> will contain the collection name",
|
"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": {
|
"errors": {
|
||||||
"nocollection": "No collection defined",
|
"nocollection": "No collection defined",
|
||||||
"missingconfig": "missing mongodb configuration"
|
"missingconfig": "missing mongodb configuration"
|
||||||
|
@ -21,9 +21,12 @@
|
|||||||
"insertOne": "insertOne",
|
"insertOne": "insertOne",
|
||||||
"insertMany": "insertMany",
|
"insertMany": "insertMany",
|
||||||
"update": "update",
|
"update": "update",
|
||||||
|
"updateOne": "updateOne",
|
||||||
|
"updateMany": "updateMany",
|
||||||
"remove": "remove",
|
"remove": "remove",
|
||||||
"deleteOne": "deleteOne",
|
"deleteOne": "deleteOne",
|
||||||
"deleteMany": "deleteMany",
|
"deleteMany": "deleteMany",
|
||||||
|
"findOne": "findOne",
|
||||||
"find": "find",
|
"find": "find",
|
||||||
"count": "count",
|
"count": "count",
|
||||||
"aggregate": "aggregate"
|
"aggregate": "aggregate"
|
||||||
@ -34,6 +37,7 @@
|
|||||||
"error": "エラー"
|
"error": "エラー"
|
||||||
},
|
},
|
||||||
"tip": "<b> Tip:</b> コレクションが設定されていない場合、 <code>msg.collection</code>がコレクション名として使われます。",
|
"tip": "<b> Tip:</b> コレクションが設定されていない場合、 <code>msg.collection</code>がコレクション名として使われます。",
|
||||||
|
"insertMany-tips": "<b> Tip:</b> 使用する場合 <code>insertMany</code> あなたの <code>msg.payload.values</code> 挿入するオブジェクトの配列です。",
|
||||||
"errors": {
|
"errors": {
|
||||||
"nocollection": "コレクションが定義されていません",
|
"nocollection": "コレクションが定義されていません",
|
||||||
"missingconfig": "mongodbの設定がみつかりません"
|
"missingconfig": "mongodbの設定がみつかりません"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user