【发布时间】:2020-04-16 23:23:37
【问题描述】:
我是 MEAN 堆栈的新手。我正在尝试实现this 和this。我正在使用$pull。但他们没有工作可能是因为我在 mongodb 中的结构与他们的不同。所以让我先告诉你:
downvoters 是一个字符串数组,其中包含对该特定文章投反对票的用户 ID。假设downvoters[2] 上的人,即53et853rf,后来对这篇文章投了赞成票。那么他的用户ID 应该从反对票列表中删除。这是我的代码:
api.js
router.put('/update-upvotes', (req, res) => {
let articleData = req.body;
...
Article.update(
{articleid: '5p4aqbryi'},
{ $pull: { downvoters: '53et853rf' } }
);
Article.findOneAndUpdate(
{articleid: '5p4aqbryi'},
{upvotes: articleData.upvotes, upvoters: articleData.upvoters}, useFindAndModify=false,
(error, user) => {
if(error) {
...
}
else {
...
}
})
})
但是那个id没有被删除。控制台上没有错误或警告。请纠正我。
这是架构
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const articleSchema = new Schema({
articleid: String,
title: String,
content: String,
date: String,
contributor: String,
upvotes: Number,
upvoters: [],
downvotes: Number,
downvoters: []
})
module.exports = mongoose.model('article', articleSchema, 'articles');
PS:现在让articleId 和downvoter id 进行硬编码。稍后我会让它们动态化。
【问题讨论】:
-
在末尾添加
.catch(e=>console.log(e))用于错误记录。 -
已添加。但仍然没有错误或警告。它只是没有做我的工作。
标签: javascript node.js mongodb typescript mongoose