iliuyt / blog

1 stars 0 forks source link

nodejs mongoose mapReduce如何使用外部数据 #61

Open iliuyt opened 4 years ago

iliuyt commented 4 years ago

默认情况下mapreduce是无法使用外部变量的,当map或reduce等方法使用外部数据执行时,会报错找不到对象。 image

根据mongoose文档中可以看到scope参数,文档告知在执行期间暴露给map / reduce / finalize的{Object}作用域变量文档地址


var opt = {};
opt.scope = {
  userData: {
    position: 2,
    brand: 2
  }
};

opt.map = function() {
    emit("error", userData.position);
};

opt.reduce = function(k, vals) {
  return vals.join(",");
};
opt.out = { replace: "post_total" };
Role.mapReduce(opt, function(err, model) {
  if (err) {
    console.log(err);
  } else {
    model.model.find().exec(function(err, docs) {
      console.log(docs);
    });
  }
});