错觉
  • 5
  • 新人请关照

用mongoose模块后 不能给任何对象添加自定义原型方法

Object.prototype.addkey=function(key,value){//动态添加属性
  if(key){
       this[key]=value
   }
   return this
}

const mongoose = require('mongoose'); //引入mongoose数据库
var Q = require("q");
 mongoose.connect('mongodb://xxxx', {
  useNewUrlParser: true,
  useCreateIndex: true,
  useFindAndModify: false,
  user: 'xxx',
  pass: 'xxx',
});

console.log(({a:1}).addkey("ddd",2222)) 

控制台会报错:

the options [addkey] is not supported

这模块也太霸道了吧,给对象添加自定义原型方法应该是很常用的

阅读 210
评论 更新于 1月13日
    1 个回答

    mongoose不让你添加一个可枚举属性罢了,不然它叠代的时候你说它该不该带上咱自定义的addkey,可以换种方式,用Object.defineProperty,这么写:

    Object.defineProperty(Object.prototype, 'addkey', {
      value :   function(key,value){
                    if(key){
                        this[key]=value
                    }  
                    return this  
                }
    });

    希望能帮助到你。

    评论 赞赏 1月13日
      MongoDB 技术问答
      合作问答

      MongoDB 官方中文社区 和 SegmentFault 联合推出的 MongoDB 技术交流平台。 这是一个以社区力量为主,但...