Недопустимый модификатор, модификатор должен быть ошибкой объекта

#javascript #mongodb #meteor #meteor-blaze

#javascript #mongodb #метеор #метеор-пламя

Вопрос:

Я пытаюсь обновить запись с клиента, но продолжаю получать ошибку. Попытался поместить все в data = {} объект и передать его моему Meteor.call методу, но все равно не смог заставить его работать.

браузер: errorClass {error: 500, reason: "Internal server error", details: undefined, message: "Internal server error [500]", errorType: "Meteor.Error"}

сервер: Exception while invoking method 'updateComment' Error: Invalid modifier. Modifier must be an object.

Я знаю, что это связано с тем, как я вызываю свой updateComment метод. Не мог бы кто-нибудь указать мне правильное направление.

Заранее спасибо.

Текущий код:

comments/methods.js

 updateComment: function (commentId, commentContent, userId, fritkotId) {
    // check(commentId, String);
    // check(commentContent, String);
    // check(userId, String);
    // check(firtkotId, String);
    Comments.update({
            _id: commentId,
            body: commentContent,
            author: userId,
            fritkotId: fritkotId,
            modifiedAt: new Date()
        });
}....
  

editComment.js

 import './editComment.tpl.jade'

// Events
Template.editComment.events({
'click .form-save': (e)  => {

    e.preventDefault();

    let data = {};

    let commentContent = $('.update-comment').val();

    let fritkotId =  Fritkots.findOne({})._id;
    let commentId = Comments.findOne({})._id;
    let userId =  Meteor.userId();

    // data.commentId = commentId;
    // data.commentContent = commentContent;
    // data.userId = userId;
    // data.fritkotId = fritkotId;

    console.log(` This is the commentId: ${commentId}, userId: ${userId}, fritkotId: ${fritkotId}`);

    Meteor.call('updateComment', commentId, commentContent, userId, fritkotId, function(error) {
        if (!error) {
            console.log('comment updated');
        } else {
            console.log(error);
            console.log('unable to update comment');
        }
    })

    console.log(`The comment was updated to this ${commentContent}`);

    console.log('I was clicked for save');

    // Session.set('editCommentId', false);
    Session.set('editCommentId', null);
},
....
  

collections/comments.js

 Comments = new Mongo.Collection('comments')

// Permissions
Comments.allow({
    insert: () => false,
    // update: (userId, doc) => { return !! userId; },
    update: () => false,
    remove: () => false
});

Comments.deny({
    insert: () => true,
    update: () => true,
    // update: (userId, doc) => { return !! userId; },
    remove: () => true
});
  

Ответ №1:

Вам нужно найти способ идентифицировать комментарий, а затем передать части, которые вы хотите изменить. Определенно есть проблема в использовании .update() (проверьте документацию).

Я полагаю, вы хотите что-то вроде этого:

 Comments.update(id, {$set: {key: value}})
  

или это

 Comments.update(id, {$set: {key: value}})