Получение 'BSON field' update.updates.collation '- неправильный тип' string ', ожидаемый тип' object '' при попытке обновить документ с помощью _id - PullRequest
0 голосов
/ 15 января 2019

При попытке обновить документ с помощью _id из узла js с использованием модели mongoose, ошибка ниже.

Поле BSON «update.updates.collation» неправильного типа «строка»,ожидаемый тип 'object'

      Model.update({
          _id: new mongoose.mongo.ObjectId(req.params.blogId),
          "comments._id":new mongoose.mongo.ObjectId(req.params.commentId)
      },{
          "$set":{
              "comments.$.description": req.body.description
          }
      },function(err,doc){
          if(err){
              next(err);
              return;
          }          
          console.log("Commented updated successfully.");    
          res.send(doc);
      })

Схема:

const blogSchema = new Schema({
    title: String,
    content: String,
    createdDate: Date,
    lastUpdated: Date,
    author: {
        name: String,
        profession: String,
        description: String
    },
    tags: [String],
    comments:[{
        title:String,
        description:String,
        date:Date,
        username:String
    }]
},{
    collection:'Blogs'
});

1 Ответ

0 голосов
/ 15 января 2019

Я думаю, что ваша ошибка происходит из описания вашей схемы. Вы не можете использовать string для определения сопоставления с mongoose (и mongodb).

Свойство collation должно быть объектом, определенным в документации :

Документ сопоставления имеет следующие поля:

{
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

Таким образом, в вашем случае вы должны обновить определение схемы, например, так (или удалить свойство сопоставления):

const blogSchema = new Schema({
  title: String,
  content: String,
  createdDate: Date,
  lastUpdated: Date,
  author: {
    name: String,
    profession: String,
    description: String
  }, 
  tags: [String],
  comments:[{
    title: String,
    description: String,
    date: Date,
    username: String
  }]
}, { collation: { locale: 'en_US', strength: 1 } });

Для получения дополнительной информации обратитесь к документации mongoose .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...