猫鼬在findOneAndUpdate()返回NULL

格雷格

为了学习MEAN堆栈(使用Mongoose),我正在创建一个StackOverflow类型的应用程序。我的问题存储在Mongo(v3.0.7)中,并且它们具有“答案”子文档。

我正在尝试增加答案的投票数,但是当问题返回时,它为null。我很确定查询有问题,特别是在我尝试获取需要修改的ID的地方。

问题模式:

var questionsSchema = new mongoose.Schema({
  answers: [ answerSchema ],
  });

答案模式:

var answerSchema = new mongoose.Schema({
  votes: { type: Number, default: 0 },
  });

查询_id返回null:

Question.findOneAndUpdate(
  {_id: req.params.questionId, 'answers._id': req.params.answerId },
  { $inc: { 'answers.$.votes': 1 } },
  { new: true },
  function(err, question){
    if (err) { return next(err); }
    //question is returned as NULL
    res.json(question);
  });

查询0票的作品:

Question.findOneAndUpdate(
  {_id: req.params.questionId, 'answers.votes': 0 },
  { $inc: { 'answers.$.votes': 1 } },
  { new: true },
  function(err, question){
    if (err) { return next(err); }
    //question is returned as NULL
    res.json(question);
  });

更新:通过Mongo查询返回结果:

db.questions.find({_id: ObjectId('562e635b9f4d61ec1e0ed953'), 'answers._id': ObjectId('562e63719f4d61ec1e0ed954') })

但是,通过猫鼬返回NULL:

 Question.find(
{_id: Schema.ObjectId('562e635b9f4d61ec1e0ed953'), 'answers._id': Schema.ObjectId('562e63719f4d61ec1e0ed954') },
丽莎(Lisa Gagarina)

尝试使用猫鼬类型ObjectID

http://mongoosejs.com/docs/api.html#types-objectid-js

var ObjectId = mongoose.Types.ObjectId;
Question.find({
    _id: '562e635b9f4d61ec1e0ed953',
   'answers._id': new ObjectId('562e63719f4d61ec1e0ed954')
})

原始更新问题的最终答案:

Question.findOneAndUpdate(
   {_id: req.params.questionId, 
    'answers._id': new ObjectId(req.params.answerId) },
   { $inc: { 'answers.$.votes': 1 } },
   { new: true },
   function(err, question){
     if (err) { return next(err); }
     res.json(question);
   });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬:findOneAndUpdate 返回奇怪的结构

来自分类Dev

猫鼬填充返回null

来自分类Dev

猫鼬FindOneAndUpdate嵌入式对象并返回父对象

来自分类Dev

猫鼬findOneAndUpdate嵌套文档

来自分类Dev

猫鼬id函数返回null

来自分类Dev

猫鼬JS findOne总是返回null

来自分类Dev

对于更新模型中的嵌套文档,findOneAndUpdate(猫鼬)返回true,但未更新任何内容

来自分类Dev

猫鼬使用findOneAndUpdate并仅返回数组中的更新元素

来自分类Dev

猫鼬ODM findOneAndUpdate子文档

来自分类Dev

猫鼬-带$ set标志的findOneAndUpdate

来自分类Dev

带PUT REST API的findOneAndUpdate猫鼬

来自分类Dev

猫鼬findOneAndUpdate更新多个字段

来自分类Dev

猫鼬— findOneAndUpdate()导致文档重复

来自分类Dev

猫鼬-findOneAndUpdate动态$推入数组

来自分类Dev

猫鼬findOneAndUpdate()深层嵌套结构

来自分类Dev

在findOneAndUpdate之后保存对猫鼬文档的引用

来自分类Dev

猫鼬ODM findOneAndUpdate子文档

来自分类Dev

猫鼬pre findOneAndUpdate挂钩问题

来自分类Dev

猫鼬findOneAndUpdate删除嵌套的变量

来自分类Dev

猫鼬填充返回null或未定义

来自分类Dev

猫鼬返回默认值而不是null值

来自分类Dev

当找不到结果时,猫鼬的findById不会返回null

来自分类Dev

嵌套字段的猫鼬虚拟字段返回 null

来自分类Dev

猫鼬返回重复的结果

来自分类Dev

猫鼬返回多个结果

来自分类Dev

猫鼬返回数组$ size

来自分类Dev

猫鼬不返回错误

来自分类Dev

猫鼬返回重复的结果

来自分类Dev

猫鼬填充返回空