2016-03-07 81 views
0

我试图通过将usersId保存到登录用户帐户来创建一个最喜欢的按钮。概念是,如果有userId(用户是最喜欢的),否则用户不是最喜欢的。问题是我收到错误update failed: Error: Favorites must be an array,我不确定这是什么意思。SimpleSchema更新错误

路径:schema.js

Schema.UserProfile = new SimpleSchema({ 
    "favorites.$.favorite": { 
     type: Object 
    } 
}); 

路径:studentlist.js

Template.student.events({ 
'click .favourite':function(event,template) { 
     console.log('click'); 
     var candidateId = this._id; 

     Meteor.users.update({_id: Meteor.userId() }, { $set: { "profile.favorites": candidateId }}); 
    } 
}); 
+1

请参阅[“应该在其标题中包含”标签?“](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共识是“不,他们不应该”! –

+0

没问题安德烈亚斯,我会把它放在船上。仍然在学习正确的做事方式。 – bp123

+0

您是否使用'aldeed:collection2'将模式附加到集合?你为什么要设置'favorites'为一个ID,通常是一个字符串,当你指定它应该是一个具有'收藏夹$'的数组?请[编辑]您的问题以提供[mcve]。 –

回答

0

你有两种基本的错误。

由于错误,您必须将Favorites属性定义为数组。并在代码中尝试使用$set命令进行更新。

当你在MongoDB中插入一个项目到一个数组时,你必须使用$push运算符。

以及修复此问题后面临的第二个问题将是不正确的数据类型插入。因为您已将favorite定义为对象,但尝试插入单纯的id。