我正在为一家网店建立一个推荐系统.购物历史记录保存在沙发数据库中.我正在通过map-Reducts for each 用户和产品创建一个视图,即该产品的购买量.减go 的部分在于求和.

// 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));
});

This gives me the following results view

第一个密钥是用户名,然后是产品.价值是用户购买该产品的总数量.然而,我希望过滤器只针对特定的用户(在头中使用JWT进行请求的过滤器,例如,只针对名为"potiron"的用户).我知道我可以在视图函数的参数中传递一个键,我try 了{key: "potiron"},但它不起作用.还有别的办法吗?

推荐答案

您的密钥不是字符串,而是array.你会想要做这样的事情:startkey=["potiron"]&endkey=["potiron",{}]

Reference

Node.js相关问答推荐

postgresql层与应用层的序列化

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

使用 playwright 获取页面中同一 url 的所有响应

在全局对象上声明的函数

无法将示例 Node.js 应用程序部署到 AWS Elastic Beanstalk

在mongoose虚拟属性中处理异步操作

结合后端(Express)和前端(Angular)路由

module.exports=require('other') 和临时变量有什么区别?

访问 Mongoose 查询之外的变量

baseurl64 缓冲区解码

node.js 中 pdfkit-tables 中的垂直线

我可以向NPM添加调试脚本吗?

错误:大多数中间件(如 bodyParser)不再与 Express Bundle

如何可靠地散列 JavaScript 对象?

Node.js 支持 =>(箭头函数)

为什么我会收到错误:解决方法指定过多?

如何在 MongoDB 中查询引用的对象?

Forever + Nodemon 一起运行

如何创建安全(TLS/SSL)Websocket 服务器