DocuSign API Set Signer Language Not Working for First Signer - docusignapi

In my tests so far when creating and sending an envelope using the DocuSign API v2.1 it is not respecting the setting for the supportedLanguage for the first signer, but does for the 2nd signer.
Here's the JSON for Signers array that I'm using:
"signers" :
[
{
"email" : "test#acme.com",
"emailNotification" :
{
"emailBody" : "",
"emailSubject" : "Please Sign the Agreement",
"supportedLanguage" : "de"
},
"name" : "Elisabeth Kiefer",
"recipientId" : "1",
"routingOrder" : "1",
"tabs" :
{
"dateSignedTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/DateSigned1/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Date Signed",
"pageNumber" : "1",
"tabLabel" : "Data Signed",
"value" : ""
}
],
"fullNameTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/SigName1/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Name",
"pageNumber" : "1",
"tabLabel" : "Name",
"value" : ""
}
],
"signHereTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/Signature1/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Sign Here",
"pageNumber" : "1",
"tabLabel" : "Signature",
"value" : ""
}
]
}
},
{
"email" : "test2#random.com",
"emailNotification" :
{
"emailBody" : "",
"emailSubject" : "Please Sign the Agreement",
"supportedLanguage" : "es"
},
"name" : "Fabio Gallego",
"recipientId" : "2",
"routingOrder" : "1",
"tabs" :
{
"dateSignedTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/DateSigned2/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Date Signed",
"pageNumber" : "1",
"tabLabel" : "Data Signed",
"value" : ""
}
],
"fullNameTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/SigName2/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Name",
"pageNumber" : "1",
"tabLabel" : "Name",
"value" : ""
}
],
"signHereTabs" :
[
{
"anchorIgnoreIfNotPresent" : false,
"anchorString" : "/Signature2/",
"anchorUnits" : "pixels",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"documentId" : "1",
"locked" : "false",
"name" : "Sign Here",
"pageNumber" : "1",
"tabLabel" : "Signature",
"value" : ""
}
]
}
}
]
You can see that the first signer's supportedLanguage is set to "de" and the second signer is set to "es". When I receive the emails for these and view the document only the second signer has the language set for the website and email. The first signer has everything in English and not German as expected.

The language setting is superseded by the user's selected lang that comes from the account.
So, you may want to change the email address to both to some random/unused emails that you know for sure are not part of any account user and check again.
There's no way for you to force the languages of the enduser, they can always overwrite your selection.

Related

"How to get 'parent to child' relation with mongodb aggregation"

I have one collection called "location". in this collection all child and parent collection are stores. now I want to create a query who returns me parent to child spaces separated string.
Collection
businessId: { type: mongoose.Schema.Types.ObjectId, ref: 'admin' },
parentId: { type: mongoose.Schema.Types.ObjectId, ref: 'location' },
name: { type: String },
image: { type: String },
imageManipulation: { type: String },
locationColor: [{ range: { type: String }, color: { type: String } }],
area: {},
settings: {},
status: { type: String, enum: [0, 1], default: 1 },
isChild: { type: String, enum: [0, 1] },
parentPosition: { type: String }
In the above collection, you can see parentId field. if the location is a child then it have parentId. if the location is a parent then parentId will null. parent location can N level child location.
Collection Data
[{
"_id" : ObjectId("5cee1002a01ad50f5c222982"),
"status" : "1",
"name" : "Ground Floor",
"settings" : {
"zoom" : "0",
"positionX" : "0",
"positionY" : "0",
"width" : "498",
"height" : "498"
},
"image" : "1559105538977.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:52:18.999Z"),
"createdAt" : ISODate("2019-05-29T04:52:18.999Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee103ca01ad50f5c222983"),
"status" : "1",
"name" : "Kitchen",
"settings" : {
"zoom" : "0",
"positionX" : "0",
"positionY" : "0",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":3,\"points\":[{\"x\":20,\"y\":178},{\"x\":19,\"y\":75},{\"x\":56,\"y\":71},{\"x\":57,\"y\":52},{\"x\":80,\"y\":18},{\"x\":138,\"y\":17},{\"x\":165,\"y\":52},{\"x\":165,\"y\":94},{\"x\":174,\"y\":96},{\"x\":173,\"y\":179}],\"fill\":\"rgba(178,40,40,0.58)\"}",
"parentId" : ObjectId("5cee1002a01ad50f5c222982"),
"image" : "1559105596975.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:53:16.990Z"),
"createdAt" : ISODate("2019-05-29T04:53:16.990Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee1078a01ad50f5c222984"),
"status" : "1",
"name" : "Cbot",
"settings" : {
"zoom" : "0",
"positionX" : "0",
"positionY" : "0",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":3,\"points\":[{\"x\":20,\"y\":311},{\"x\":17,\"y\":59},{\"x\":84,\"y\":58},{\"x\":88,\"y\":312}],\"fill\":\"rgba(20,205,123,0.67)\"}",
"parentId" : ObjectId("5cee103ca01ad50f5c222983"),
"image" : "1559105656049.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:54:16.070Z"),
"createdAt" : ISODate("2019-05-29T04:54:16.070Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee10c1a01ad50f5c222985"),
"status" : "1",
"name" : "Drower 1",
"settings" : {
"zoom" : "5",
"positionX" : "470",
"positionY" : "70",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":3,\"points\":[{\"x\":21,\"y\":102},{\"x\":81,\"y\":104},{\"x\":79,\"y\":43},{\"x\":21,\"y\":43}],\"fill\":\"rgba(16,77,193,0.5)\"}",
"parentId" : ObjectId("5cee1078a01ad50f5c222984"),
"image" : "1559105729881.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:55:29.901Z"),
"createdAt" : ISODate("2019-05-29T04:55:29.901Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee110ea01ad50f5c222986"),
"status" : "1",
"name" : "Drawer 2",
"settings" : {
"zoom" : "5",
"positionX" : "484",
"positionY" : "103",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":1,\"coordinates\":{\"x\":23,\"y\":125,\"width\":58,\"height\":56},\"points\":[{\"x\":23,\"y\":125},{\"x\":81,\"y\":181}],\"fill\":\"rgba(117,37,109,0.74)\"}",
"parentId" : ObjectId("5cee1078a01ad50f5c222984"),
"image" : "1559105806551.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:56:46.574Z"),
"createdAt" : ISODate("2019-05-29T04:56:46.574Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee1148a01ad50f5c222987"),
"status" : "1",
"name" : "Drawer 3",
"settings" : {
"zoom" : "5",
"positionX" : "477",
"positionY" : "94",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":3,\"points\":[{\"x\":22,\"y\":205},{\"x\":20,\"y\":290},{\"x\":84,\"y\":288},{\"x\":85,\"y\":205}],\"fill\":\"rgba(164,108,54,0.57)\"}",
"parentId" : ObjectId("5cee1078a01ad50f5c222984"),
"image" : "1559105864947.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:57:44.972Z"),
"createdAt" : ISODate("2019-05-29T04:57:44.972Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee5e683b9f67a9f501f818"),
"status" : "1",
"name" : "Washroom",
"settings" : {
"zoom" : "5",
"positionX" : "477",
"positionY" : "94",
"width" : "498",
"height" : "498"
},
"area" : "{\"type\":3,\"points\":[{\"x\":22,\"y\":205},{\"x\":20,\"y\":290},{\"x\":84,\"y\":288},{\"x\":85,\"y\":205}],\"fill\":\"rgba(164,108,54,0.57)\"}",
"parentId" : ObjectId("5cee1002a01ad50f5c222982"),
"image" : "1559105864947.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:57:44.972Z"),
"createdAt" : ISODate("2019-05-29T04:57:44.972Z"),
"__v" : 0
},
{
"_id" : ObjectId("5cee5f593b9f67a9f501fa01"),
"status" : "1",
"name" : "Third Floor",
"settings" : {
"zoom" : "0",
"positionX" : "0",
"positionY" : "0",
"width" : "498",
"height" : "498"
},
"image" : "1559105538977123.jpg",
"businessId" : ObjectId("5cbd61dc3b56b902284ea388"),
"locationColor" : [],
"updatedAt" : ISODate("2019-05-29T04:52:18.999Z"),
"createdAt" : ISODate("2019-05-29T04:52:18.999Z"),
"__v" : 0
}]
Expected result in JSON
[
{
"_id": "5cee1002a01ad50f5c222982",
"name": "Ground Floor"
},
{
"_id": "5cee103ca01ad50f5c222983",
"name": " Kitchen"
},
{
"_id": "5cee1078a01ad50f5c222984",
"name": " Cbot"
},
{
"_id": "5cee110ea01ad50f5c222986",
"name": " Drawer 2"
},
{
"_id": "5cee1148a01ad50f5c222987",
"name": " Drawer 3"
},
{
"_id": "5cee10c1a01ad50f5c222985",
"name": " Drower 1"
},
{
"_id": "5cee5e683b9f67a9f501f818",
"name": " Washroom"
},
{
"_id": "5cee5f593b9f67a9f501fa01",
"name": "Third Floor"
}
]
I do not think you should let mongodb take care of name formatting. So my solution is about finding how many spaces a certain name needs before, so that js can deal with formatting. This is the query:
db.collection.aggregate([
{
$graphLookup: {
from: "collection",
startWith: "$parentId",
connectFromField: "parentId",
connectToField: "_id",
as: "hierarchy"
}
},
{
$project: {
"_id": 1,
"name": 1,
"hierarchy_size": { $size: "$hierarchy" }
}
}
]);
With the $graphLookup, the db is building an in memory graph of edges between connectFromField and connectToField. From the graph you only need the depth of your hierarchy, so I computed hierarchy_size. This is the output:
/* 1 */
{
"_id" : ObjectId("5cee1002a01ad50f5c222982"),
"name" : "Ground Floor",
"hierarchy_size" : 0
}
/* 2 */
{
"_id" : ObjectId("5cee103ca01ad50f5c222983"),
"name" : "Kitchen",
"hierarchy_size" : 1
}
/* 3 */
{
"_id" : ObjectId("5cee1078a01ad50f5c222984"),
"name" : "Cbot",
"hierarchy_size" : 2
}
/* 4 */
{
"_id" : ObjectId("5cee10c1a01ad50f5c222985"),
"name" : "Drower 1",
"hierarchy_size" : 3
}
/* 5 */
{
"_id" : ObjectId("5cee110ea01ad50f5c222986"),
"name" : "Drawer 2",
"hierarchy_size" : 3
}
/* 6 */
{
"_id" : ObjectId("5cee1148a01ad50f5c222987"),
"name" : "Drawer 3",
"hierarchy_size" : 3
}
/* 7 */
{
"_id" : ObjectId("5cee5e683b9f67a9f501f818"),
"name" : "Washroom",
"hierarchy_size" : 1
}
/* 8 */
{
"_id" : ObjectId("5cee5f593b9f67a9f501fa01"),
"name" : "Third Floor",
"hierarchy_size" : 0
}
The only problem here might be query performances, but that depends on how much data you need to process. Also consider the memory limit.

DocuSign API - Envelope Checkbox tabs not unique

I'm creating an Envelope signing request using the DocuSign API which includes 2 checkbox tabs. When I view the document after receiving the email when I click on either of the 2 checkboxes it puts a tick in both of them.
The 2 checkboxes appear but clicking either of them marks them both as ticked.
Here's the JSON for the tabs:
"tabs" :
{
"checkboxTabs" :
[
{
"documentId" : "1",
"pageNumber" : "6",
"required" : "true",
"tabId" : "0",
"tabLabel" : "",
"xPosition" : "323",
"yPosition" : "170"
},
{
"documentId" : "1",
"pageNumber" : "6",
"required" : "true",
"tabId" : "1",
"tabLabel" : "",
"xPosition" : "323",
"yPosition" : "184"
}
],
"dateSignedTabs" :
[
{
"documentId" : "1",
"pageNumber" : "6",
"xPosition" : "447",
"yPosition" : "272"
}
],
"signHereTabs" :
[
{
"documentId" : "1",
"pageNumber" : "6",
"xPosition" : "266",
"yPosition" : "231"
}
],
"textTabs" :
[
{
"documentId" : "1",
"pageNumber" : "6",
"tabLabel" : "Name",
"xPosition" : "86",
"yPosition" : "273"
}
]
}
They have unique "tabId" values - not sure what I need to do to make them separate checkboxes that can be ticked/unticked independently.
You'll need to give each checkbox a unique TabLabel. By giving them the same 'empty' TabLabel, you're telling DocuSign that data should populate between them.

Mongodb Count multiple subobjects and group by

Hello This query is running fine for me I want to add other arrays as well like contact and I want separate count for them. If I add contact it add the result in count P.S : I used array name with $sum it start showing me zero count
return Company.aggregate(
{"$unwind":"$agreement"},
{"$unwind":"$contact"},
{"$unwind":"$companySite"},
{ $group: { _id: {
"Organization": "$orgId",
"Company": "$name"
}, "count": { $sum: 1 } } },{
"$project": {
"_id": 0,
"Company": "$_id.Company",
"Organization":"$_id.Organization",
"Count": "$count"
}
})
expected output
"Company": "Multi-Metal Manufacturing",
"Organization": "1",
"AgreementCount": 1,
"ContactCount" : 4
"ABC Count": 5
Sample Document is :
{
"_id" : ObjectId("57c6a97a90c933a2d54117dc"),
"ITBCompanyId" : 1034,
"updatedAt" : ISODate("2016-08-31T12:47:03.679Z"),
"createdAt" : ISODate("2016-08-31T09:55:06.217Z"),
"identifier" : "INL10",
"name" : "Inline Data Systems",
"addressLine1" : "7 Park Place",
"addressLine2" : "Ste D",
"city" : "Swansea",
"orgId" : "1",
"deletedAt" : null,
"_info" : {
"lastUpdated" : ISODate("2016-02-10T21:22:15.000Z"),
"updatedBy" : "Clarissa"
},
"whois" : [],
"configuration" : [],
"contact" : [
{
"email" : "justin#inlinedatasystems.com",
"mobileGuid" : "d8852942-8f5a-406f-a646-a5f8697f7885",
"presence" : null,
"gender" : null,
"title" : null,
"country" : null,
"zip" : null,
"state" : null,
"city" : null,
"addressLine2" : null,
"addressLine1" : null,
"lastName" : "Wilkerson",
"firstName" : "Justin",
"id" : 191,
"_id" : ObjectId("57c6abdfb966968130b1671c"),
"communicationItems" : [],
"customFields" : null,
"company" : {
"name" : "Inline Data Systems",
"id" : "19331"
},
"relationship" : {
"name" : null,
"id" : 0
}
}
],
"agreement" : [
{
"periodType" : null,
"billAmount" : "0",
"billTermsId" : 12,
"billOneTimeFlag" : false,
"billCycleId" : "2",
"expiredDays" : "0"
},
{
"id" : "40",
"name" : "Managed Hosted Server Agreement",
"billAmount" : "0",
"periodType" : null,
"_id" : ObjectId("57c6ab96b966968130b16616"),
"_info" : {
"lastUpdated" : ISODate("2014-10-03T14:25:42.000Z"),
"updatedBy" : "ali "
},
"contact" : {
"id" : "191",
"name" : "Justin Wilkerson"
},
"agreementType" : {
"id" : "33",
"name" : "HDCloud - Hosted Server"
}
},
{
"id" : "41",
"name" : "Managed Backup Agreement",
"parentAgreementId" : "42",
"customerPO" : ""
}
],
"companySite" : [
{
"id" : 1037,
"name" : "Main",
"city" : "Swansea",
"state" : "IL",
"zip" : "62226",
}
]

Docusign Rest API CarbonCopy Not Working

I am trying to send a Document for signature using Docusign (Using RestAPI), It has one recipient as a Signer and one as Carbon Copy. I have pasted the JSON below and also I get a success message when calling the Rest API in the demo environment.
However the Recipient designated as CarbonCopy never gets the email, The Signer do recieves the email from Docusign
"emailSubject" : "This is the Subject of the Message",
"emailBlurb" : "This is the Body of the message",
"recipients" : {
"signers" : [ {
"routingOrder" : "1",
"name" : "Signer 1",
"email" : "signer1#gmail.com",
"recipientId" : "1",
"tabs" : {
"signHereTabs" : [ {
"anchorString" : "By:",
"anchorXOffset" : "0",
"anchorYOffset" : "0",
"anchorIgnoreIfNotPresent" : "true",
"anchorUnits" : "inches"
} ]
}
} ],
"carbonCopies" : [ {
"routingOrder" : "2",
"recipientId" : "2",
"name" : "Carbon Copy1",
"email" : "carboncopy1#gmail.com"
} ]
},
"documents" : [ {
"name" : "document.pdf",
"documentId" : "1",
"bytes" : "document Bytes go here - Omitted to make it readable"
} ],
"status" : "sent"
}
Success Message Recieved
{ "envelopeId": "95c0cd64-7b4e-4d98-ad9c-ae74c08cf7f9", "uri": "/envelopes/95c0cd64-7b4e-4d98-ad9c-ae74c08cf7f9", "statusDateTime": "2015-10-19T21:00:30.7100000Z", "status": "sent"}
Yes and I did solve the problem having the carbon copy routing order always higher than the signers, so in the above JSON just reversed the routing order and it worked for me

MongoDB can't get all the rows

I've got a project using the MEAN stack and inside the Mongo DB collection I've got a collection called 'services' with the following rows (a small subset):
{ "_id" : ObjectId("55af611de2be6d817d000001"), "client" : "55a8e5fa586f94752a000002", "collaborators" : null, "date" : ISODate("2015-07-22T09:23:41.917Z"), "latestUpdateDate" : ISODate("2015-07-22T09:23:41.917Z"), "backofficeRequested" : false, "description" : "Uma descrição qq", "wasSeen" : 0, "currentStatusId" : "0", "lastStatusId" : 4, "__v" : 2, "addresses" : [ ], "dates" : [ ], "estimateDuration" : 61, "estimatePrice" : "55", "notes" : [ ], "serviceDate" : ISODate("2015-07-23T10:07:00Z"), "totalPrice" : "600", "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55afa8662c1e98c80d2fd2ff"), "client" : "55a8e5fa586f94752a000002", "estimatePrice" : "12", "estimateDuration" : NumberLong(720), "description" : "12", "serviceDate" : ISODate("1212-12-12T12:48:45Z"), "lastStatusId" : null, "currentStatusId" : "0", "collaborators" : [ { "id" : "55acb6022c1e98d05f2fd2ff" } ], "dates" : [ ], "totalPrice" : "", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55afa9f62c1e98370e2fd2ff"), "client" : "55ae68d82c1e98ac782fd303", "estimatePrice" : "12", "estimateDuration" : NumberLong(720), "description" : "12", "serviceDate" : ISODate("1212-12-12T12:48:45Z"), "lastStatusId" : null, "currentStatusId" : "1", "collaborators" : [ { "id" : "55acb6022c1e98d05f2fd2ff" } ], "dates" : [ ], "totalPrice" : "500", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55afaa7e2c1e98bc0d2fd2ff"), "client" : "55a8e5fa586f94752a000002", "estimatePrice" : "12", "estimateDuration" : NumberLong(720), "description" : "12", "serviceDate" : ISODate("1212-12-12T12:48:45Z"), "lastStatusId" : null, "currentStatusId" : "0", "collaborators" : [ { "id" : "55acb6022c1e98d05f2fd2ff" } ], "dates" : [ ], "totalPrice" : "", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55afaf582c1e98d80d2fd303"), "client" : "55ae68d82c1e98ac782fd303", "estimatePrice" : "1", "estimateDuration" : NumberLong(60), "description" : "1", "serviceDate" : ISODate("1111-11-11T11:47:45Z"), "lastStatusId" : null, "currentStatusId" : "4", "collaborators" : [ { "id" : "55ae40772c1e98007a2fd2ff" } ], "dates" : [ ], "totalPrice" : "", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55afb8472c1e98370e2fd300"), "client" : "55a8e5fa586f94752a000002", "estimatePrice" : "1", "estimateDuration" : NumberLong(60), "description" : "1", "serviceDate" : ISODate("1111-11-11T11:47:45Z"), "lastStatusId" : null, "currentStatusId" : NumberLong(2), "collaborators" : [ { "id" : "55ae40772c1e98007a2fd2ff" } ], "dates" : [ ], "totalPrice" : "", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
{ "_id" : ObjectId("55aff2dc2c1e98ac112fd2ff"), "client" : "55a8e5fa586f94752a000002", "estimatePrice" : "1", "estimateDuration" : NumberLong(720), "description" : "1", "serviceDate" : ISODate("1989-12-12T12:12:00Z"), "lastStatusId" : null, "currentStatusId" : NumberLong(2), "collaborators" : [ { "id" : "55ae40772c1e98007a2fd2ff" } ], "dates" : [ ], "totalPrice" : "", "backofficeRequested" : NumberLong(0), "serviceInvoiced" : "No", "evaluation" : "", "positiveFeatures" : "", "negativeFeatures" : "" }
I want to get all the rows belonging to the client with the ID "55a8e5fa586f94752a000002".
It's pretty easy to do in the mongo Shell:
db.services.find({"client":"55a8e5fa586f94752a000002"})
But I am having a hard time inside Node.js because it either returns no services at all or it ends up returning just one service.
Here's what I'm using right now:
(...)
console.log(checkDatas[0]._id);
Service.find().where('client', checkDatas[0]._id)
.exec(function(err, services)
{
console.log("output: " + services);
(...)
And finally, here's the output:
**55a8e5fa586f94752a000002**
**output**: { _id: 55aff719af19b58913000001,
client: 55a8e5fa586f94752a000002,
__v: 1,
collaborators: [ { id: '55acb6022c1e98d05f2fd2ff' } ],
notes: [],
dates: [],
addresses: [],
date: Wed Jul 22 2015 22:03:37 GMT+0200 (CEST),
latestUpdateDate: Wed Jul 22 2015 22:03:37 GMT+0200 (CEST),
backofficeRequested: false,
totalPrice: null,
estimatePrice: null,
estimateDuration: null,
description: '',
serviceDate: null,
wasSeen: 0,
currentStatusId: 3,
lastStatusId: 1 }
It's as if I were using findOne but I'm not.
On top of that, yesterday I had a .sort() method also in that query and things worked fine after commenting it but today the problem's back.
Do MongoDB / Node have some sort of caching system I'm not aware of?
Thanks
EDIT:
Running
Service.find({'client': checkDatas[0]._id})
yields the same result
It looks like you're mixing ObjectId's and strings, which are two different things.
Your Mongoose query is looking for an ObjectId:
Service.find().where('client', checkDatas[0]._id)
Quick tip: you can distinguish both types in the output:
// ObjectId, because it doesn't have quotes around it
client: 55a8e5fa586f94752a000002
// String
collaborators: [ { id: '55acb6022c1e98d05f2fd2ff' } ]
Your MongoDB shell query is looking for a string:
db.services.find({"client":"55a8e5fa586f94752a000002"})
The subset you're posting shows only strings, but I think that your database may actually contain both types. You can check and see if this works better:
Service.find().or([
{ client : checkDatas[0]._id },
{ client : String(checkDatas[0]._id) }
])...
Obviously this isn't ideal, you should consider normalizing your database if both types are mixed.
EDIT: the or query probably won't work when using Mongoose, since it will cast both clauses to the type defined in the schema. You can still check from the Mongo shell:
db.services.find({ $or : [
{ client : "55a8e5fa586f94752a000002" },
{ client : ObjectId("55a8e5fa586f94752a000002") }
]})

Resources