ich den folgenden Code habe:Argument muss ein String in NodeJS seine
var objectid = infos[i].id;
var name = infos[i].name;
return collection.aggregate([
{$match: {app: new ObjectId(objectid)}},
{$group: {_id: "$uid", amt: {$sum: 1}}}
])
Zuvor dieser Code funktioniert gut, aber vor kurzem begann ich die unten in stacktrace Segeln bekommen:
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)
es beschwert sich wegen der ObjectId
, die ich wie so importiert:
var ObjectId = require('mongodb').ObjectID;
wie ich schon sagte, dies w wie funktioniert gut, aber nicht mehr. Ich bin wirklich verwirrt. Wenn ich objectId als eine Zeichenkette gebe, gibt es keine Ergebnisse zurück. Wenn ich es so belasse (wie es vorher funktionierte), werden Ausnahmen ausgelöst. Was ist das Problem hier?
Ich habe die unten lesen:
https://docs.mongodb.com/v3.0/reference/operator/aggregation/cmp/#exp._S_cmp
Ich bin der Lage, dies in robomongo zu tun:
db.getCollection("openevent").aggregate([
{$match: {app: new ObjectId(OBJECT_ID) }},
{$group: {_id: "$uid", amt: {$sum: 1}}}
])
wie oben die gleichen Werte verwenden. Was mache ich falsch??
Ich sehe die folgenden für sails-mongo
:
└─┬ [email protected]
└─┬ [email protected]
└── [email protected]
Es sieht aus wie es erwartet, einen Puffer zu finden. Was ist mit 'new ObjectId (neuer Puffer (String (objectid))')? – HeadCode
Funktioniert nicht :(Das übergebene Argument muss eine einzelne Zeichenfolge von 12 Byte oder eine Zeichenfolge von 24 Hexadezimalzeichen sein. – KVISH
Können Sie console.log die Objekt-ID nach der ersten Zeile oben? – HeadCode