mongoose: bugs during update from 4.7.2 to 4.7.3

Hello,

Yesterday after update the mongoose to 4.7.3 i hava some trouble with “all” tests in my application All tests returns me: Validation Errors, and Cast errors, TypeError: Cannot read property ‘remove’ of undefined;

Sample error:

 CastError: Cast to ObjectId failed for value "586b672be11a4670c4eb3f66" at path "_id" for model "User"
      at MongooseError.CastError (/common/node_modules/mongoose/lib/error/cast.js:26:11)
      at ObjectId.cast (/common/node_modules/mongoose/lib/schema/objectid.js:147:13)
      at ObjectId.castForQuery (/common/node_modules/mongoose/lib/schema/objectid.js:187:15)
      at cast (/common/node_modules/mongoose/lib/cast.js:229:32)
      at Query.cast (/common/node_modules/mongoose/lib/query.js:2752:12)
      at Query.findOne (/common/node_modules/mongoose/lib/query.js:1353:10)
      at /common/node_modules/mongoose/lib/query.js:2310:21
      at Query.exec (/common/node_modules/mongoose/lib/query.js:2304:17)
      at Query.then (/common/node_modules/mongoose/lib/query.js:2351:15)
      at next (/common/node_modules/co/index.js:100:51)
      at onFulfilled (/common/node_modules/co/index.js:69:7)
      at /common/node_modules/co/index.js:54:5
      at co (/common/node_modules/co/index.js:50:10)
      at Test.<anonymous> (src/routes/me.spec.js:169:11)
      at Test.assert (/common/node_modules/supertest/lib/test.js:156:6)
      at Server.assert (/common/node_modules/supertest/lib/test.js:127:12)
      at emitCloseNT (net.js:1537:8)

Let me know what more informations you know.

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 8
  • Comments: 22 (1 by maintainers)

Most upvoted comments

Hi @vkarpov15 We have performed some tests locally and have seen that in this line https://github.com/Automattic/mongoose/blob/master/lib/schema/objectid.js#L147 …the error that is being catched and transformed into a CastError is this:

[TypeError: hex is not a function]

We have tried tracking this through the dependencies, and if we got this right, this goes all the way down to the bson package which happens to have been updated 19h ago (https://www.npmjs.com/package/bson) and seems to involve some validation changes in the ObjectId type (https://github.com/mongodb/js-bson/commit/e136ac084a8a3db135a9e36efa157f517b5336e4)

… bson is listed in mongoose’s package.json with ~1.0.1 and the latest version is 1.0.2.

In my local environment, where I can reproduce this, bson has been updated to the 1.0.2 as a dependency of mongodb-core.

├─┬ mongoose@4.7.4
│ ├─┬ async@2.1.4
│ │ └── lodash@4.17.4
│ ├── bson@0.5.7
│ ├── hooks-fixed@1.2.0
│ ├── kareem@1.1.5
│ ├─┬ mongodb@2.2.16
│ │ ├── es6-promise@3.2.1
│ │ ├─┬ mongodb-core@2.1.2
│ │ │ ├── bson@1.0.2
│ │ │ └─┬ require_optional@1.0.0
│ │ │   └── resolve-from@2.0.0
│ │ └─┬ readable-stream@2.1.5
│ │   └── isarray@1.0.0

Found a temporary solution:

npm install mongoose@4.7.2

We also have this problem:

"TypeError: Unknown encoding: 2",
        " at Buffer.slowToString (buffer.js:363:17)",
        " at Buffer.toString (buffer.js:376:27)",
        " at ObjectID.toString (/data/home/project/node_modules/mongodb-core/node_modules/bson/lib/bson/objectid.js:174:20)",

which is similar to this one https://travis-ci.org/Automattic/mongoose/jobs/188445650 :

  1) document bug fixes toObject() with buffer and minimize (gh-4800):
     TypeError: Unknown encoding: 1
      at Buffer.slowToString (buffer.js:487:17)
      at Buffer.toString (buffer.js:500:27)
      at ObjectID.toString (node_modules/bson/lib/bson/objectid.js:174:20)

#same issue doesn’t recognize valid _id’s

@ifyour temporary version drop to mongoose 4.7.2, fixes the issue

Looks like there’s already a PR in the bson module that fixes the root of this problem https://github.com/mongodb/js-bson/issues/204

bson problem was fixed with v1.0.3

https://github.com/Automattic/mongoose/issues/4864 https://github.com/mongodb/js-bson/commit/35f5264446fb74e475ecf25f94ce7b177b5b35fd

Re-intstall all deps, verify that bson is v1.0.3 and see if it works now.