jestem mających następujący kod:Argument musi być ciągiem w nodejs
var objectid = infos[i].id;
var name = infos[i].name;
return collection.aggregate([
{$match: {app: new ObjectId(objectid)}},
{$group: {_id: "$uid", amt: {$sum: 1}}}
])
Wcześniej ten kod działa dobrze, ale ostatnio zacząłem się poniżej StackTrace w żagle:
error: TypeError: Argument must be a string
at TypeError (native)
at Buffer.write (buffer.js:791:21)
at serializeObjectId (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:242:10)
at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:699:17)
at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:551:17)
at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
at serialize (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/bson.js:47:27)
to skarży powodu ObjectId
które importowane tak:
var ObjectId = require('mongodb').ObjectID;
jak powiedziałem wcześniej, to wagowo działa dobrze, ale już nie. Jestem bardzo zmieszany. Jeśli wstawię objectId jako ciąg znaków, nie zwróci on żadnych wyników. Jeśli zostawiam go w niezmienionym stanie (jak działało wcześniej), zgłasza wyjątki. Jaki jest problem?
mam przeczytać poniżej:
https://docs.mongodb.com/v3.0/reference/operator/aggregation/cmp/#exp._S_cmp
jestem w stanie to zrobić w robomongo:
db.getCollection("openevent").aggregate([
{$match: {app: new ObjectId(OBJECT_ID) }},
{$group: {_id: "$uid", amt: {$sum: 1}}}
])
Stosując te same wartości jak wyżej. Co ja robię źle??
widzę następujące dla sails-mongo
:
└─┬ [email protected]
└─┬ [email protected]2.1.6
└── [email protected]
Wygląda na to, że spodziewa się znaleźć bufor. A co powiesz na "nowy ObjectId (nowy bufor (String (objectid)))"? – HeadCode
Nie działa :('przekazany argument musi być pojedynczym ciągiem 12 bajtów lub ciągiem 24 znaków szesnastkowych' – KVISH
Czy możesz console.log obiektu po pierwszym wierszu powyżej? – HeadCode