用了Mongoose后,不能用Object.prototype.method扩展对象
发布于 3年前 作者 romboo 1419 次浏览

Object.prototype.asafd = function(){}报错,扩展任意方法都报错,之所以扩展Object.prototype是为了兼容客户端代码。

错误如下:

TypeError: Object function (expr){

} has no method ‘onOpen’ at open (/var/node_modules/mongoose/lib/connection.js:313:27) at NativeConnection.Connection.onOpen (/var/node_modules/mongoose/lib/connection.js:322:5) at Connection.open (/var/node_modules/mongoose/lib/connection.js:198:12) at Db.open (/var/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:258:14) at Server.connect.connectCallback (/var/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:230:7) at g (events.js:185:14) at EventEmitter.emit (events.js:115:20) at Db._callHandler (/var/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1396:25) at Server.connect.connectionPool.on.server._serverState (/var/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:421:30) at MongoReply.parseBody (/var/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:127:5)

8 回复

可以在模型上添加方法。你去看看文档 我懒得翻了

不好兼容浏览器上的JS吧

@romboo 重点是为什么要兼容浏览器js呢

@darklowly 用Node.js最大的动力来自于前后端可以统一代码,然后是高并发

@romboo 重点是,这mongoose是数据库驱动。是后端的事

@darklowly 他可能试图让服务端的js在客户端也跑…比如 Object.prototype.each啥的.

@rekey 嗯,就是这个意思,如果js代码只能在服务器端运行,那就没什么意思了。

不要乱扩展Object的原型,如果你扩展不了,说明人家已经采取像Object.seal这样的方法阻止你的为所欲为!

回到顶部