CouchDB 推荐引擎与apache couch-db和nano:过滤特定用户的视图

jfgube3f  于 12个月前  发布在  CouchDB
关注(0)|答案(1)|浏览(174)

我正在为一个网店构建一个推荐系统,购物历史保存在一个couch-db数据库中,我正在通过map-reduce创建一个视图,为每个用户和产品输出购买该产品的数量,reduce部分包括求和。

// map 
const onCheckout = (doc) => {
  const { username, items } = doc;

  // once a checkout is done (i.e. history db is populated)
  // map every items bought
  items.map((item) => emit([username, item.name], item.quantity));
};

字符串
然后,我可以获取我的推荐服务并获取视图。

router.get("/recommendation/user", jwt, (req, res) => {
  const { username } = req.auth;
  history
    .view("on-checkout__user", "items_bought", {
      group: true,
    })
    .then((body) => {
      console.log(body.rows);
      res.status(200).json({ content: body.rows });
    })
    .catch((err) => res.send(err));
});


结果如下:x1c 0d1x
第一个关键字是用户名,然后是产品。值是该产品的用户购买的总数量。但是,我想过滤器,只为特定的用户查看(在头中使用JWT进行请求的请求,例如,仅针对名为“potiron”的用户)。我知道我可以在视图函数的参数中传递一个键,我用{key: "potiron"}试过了,但是不行。还有别的办法吗?

zed5wv10

zed5wv101#

你的键不是字符串,而是一个数组。你会想这样做:startkey=["potiron"]&endkey=["potiron",{}]
参考

相关问题