我一直在尝试添加到一个数组(或者 ruby 说的是一个数组),但是不断从 mongo 收到一个错误,上面写着
无法将 $addToSet 修饰符应用于非数组
当我尝试跑步时
User.collection.update({'id'=> current.id},{'$addToSet'=>{ 'following' => current.id}}) User.collection.update({'id'=> user.id},{'$addToSet'=>{ 'following' => user.id}})
或 mongomapper 版本
User.push_uniq(current.id, :following => user.id) User.push_uniq(user.id, :followers => current.id)
当我输出
<%= 调试@user.following.kind_of? 数组 %>
返回真
但是,运行时
db.users.find()
直接反对mongo,我得到
{“_id”:ObjectId(“4c4a196f15a79004e0000007”),“电子邮件”:“test@test.com”,“foll 所有者”:null,“以下”:null,“password_hash”:“98f2188de42bce1554d08fbc81 d5c99a2c234933", "password_salt" : "25d80a83cfe3d126cdbe9fec2b731ab9ea57c3b8", " 用户名”:“测试”}
我本来希望追随者和追随者是[],而不是空。
当我输出调试@user.followers 时,rails 显示 --- []
我创建用户的模型是
键:用户名,:类型=>字符串 键 :email, :type => 字符串 键 :password_hash, :type => 字符串 键 :password_salt, :type => 字符串 键:追随者,:类型=>数组 键 :following, :type => 数组
该错误使我相信正在找到 user.followers,但无法更新。当我改变
User.push_uniq(current.id, :testing => user.id)
我没有收到错误,所以我认为我的那部分是正确的。有什么建议么?