【发布时间】:2015-05-21 17:08:21
【问题描述】:
我正在尝试使用 MongoDB、Mongoose、JQuery 和 Node.js 构建应用程序。每当我尝试添加到架构中的数组时,有时它会多次添加该项目。
架构
这是我的架构,我正在尝试添加我的 upvote 和 downvote 数组,以跟踪通过他们的 id 投票的用户。
var SuggestionSchema = new mongoose.Schema({ 标题:字符串, 内容:字符串, 链接:字符串, 赞成票:[{ 用户身份: { 类型:Schema.ObjectId, 参考:'用户' } }], 否决票:[{ 用户身份: { 类型:Schema.ObjectId, 参考:'用户' } }], 用户身份: { 类型:Schema.ObjectId, 参考:'用户' }, 类别ID:{ 类型:Schema.ObjectId, 参考:'类别' }, });路由查询
这是我的放置路线和查询
router.put('/:suggestion_id/downvote', function(req, res, next) { Suggestion.findByIdAndUpdate( req.params.suggestion_id, {$push: {"downvote": req.body}}, 功能(错误,建议){ res.json(建议); }) });使用 Jquery 进行 Ajax 调用
这是我在点击时触发的 PUT 请求。
$('#downvote').click(function(){ 变种用户 = { user_id: current_user._id } $.ajax({ url: current_url + "suggestions/" + current_suggestion + '/downvote', 类型:'PUT', 数据:用户, 成功:函数(数据){ //打回来 } }); }结果
另外两点需要注意:
控制台将返回:
加载资源失败:net::ERR_EMPTY_RESPONSE
与
最终仅单击一次有时会导致 2 或 3 个同一用户被推入 Schema 中的 downvote 数组。我在前端设置了一些保护措施来检查用户是否已经投票,但它似乎仍然通过多次,所以我认为这是一个不同的问题。我相信我只是错误地接近它或错过了一些基本的东西。我只写了 6 个月的代码,所以我还在学习。谢谢!
【问题讨论】:
-
当这种情况发生时,您是否看到针对服务器的多个请求?
标签: javascript jquery node.js mongodb mongoose