#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}})