保存后使用猫鼬精益

时间:2019-02-10 14:32:07

标签: mongodb mongoose mongoose-schema

因此,我试图将密钥添加到返回的mask = df['Col'].str.contains('[edit]', regex=False) df['B'] = df.pop('Col').str.split('\s+\(|\s+\[', n=1).str[0] df.insert(0, 'A', df['B'].where(mask).ffill()) df = df[df['A'] != df['B']].reset_index(drop=True) print (df) A B 0 Honda Accord 1 Honda Civic 2 Honda Pilot 3 Toyota Prius 4 Toyota Highlander 5 Ford Explorer 中。但是我似乎无法items = [] for x in df['Col']: if x.endswith('[edit]'): a = x.rstrip(' [edit]') else: b = x.split('(')[0].strip() items.append((a, b)) df = pd.DataFrame(items, columns=['A', 'B']) print (df) A B 0 Honda Accord 1 Honda Civic 2 Honda Pilot 3 Toyota Prius 4 Toyota Highlander 5 For Explorer 工作。保存后如何处理返回的帖子?

我当时在想也许我需要像这样的post向我的lean()添加瘦肉。但这是行不通的,而且这只会使第一个初始职位变得可变。它会说

  

post.save不是函数

如果我也像findById一样

我只想将要发送回客户端的对象返回,我不希望它们的密钥保存在实际文档中。

Post.findById(req.params.id).lean().then()

编辑

Post.findById(req.params.id).lean().then()

给出错误

  

post.save不是函数

1 个答案:

答案 0 :(得分:1)

您可以通过在req.user.id indexOf数组中搜索likes来简单地做到这一点

Post.findOne({ _id: req.params.id }).lean().then((post) => {
  if (post.likes.indexOf(req.user.id) !== -1) {
    post.isLiked = true
  }
  post.isLiked = false
  res.json(post)
})

聚合效果更好

Post.aggregate([
  { "$match": { "_id": mongoose.Types.ObjectId(req.user.id) }},
  { "$addFields": {
    "isLiked": { "$in": [mongoose.Types.ObjectId(req.user.id), "$likes"] }
  }}
])

编辑:-如果要更新文档,请使用更新查询

Post.findOneAndUpdate(
  { _id: req.params.id },
  { $pull: { likes: { user: req.user.id } }},
  { new: true }
).then((post) => {
  res.json(post)
})

发布喜欢的模式

...
    likes: [
        {
          user: {
            type: Schema.Types.ObjectId,
            ref: "users"
          }
        }
      ]
...