gpt4 book ai didi

javascript - Meteor:如何将项目推送到用户集合并创建列表或数组,而不是用新项目替换每个项目?

转载 作者:行者123 更新时间:2023-12-02 14:24:50 25 4
gpt4 key购买 nike

我正在尝试通过单击事件将另一个集合中的对象附加到 Meteor.user 集合。我有一个集合,其中包含名为“类别”的项目列表,每个类别都有一个名称字段,我想将其名称插入meteor.user。

它的工作方式应该是用户可以根据需要推送任意数量的这些名称,但是它只接受一个条目,当我单击另一个名称时,新名称会替换旧名称,而不是成为一个名称大批。我怎样才能让它允许很多条目?

客户端/user.js

Template.CategoriesMain.events({
'click .toggle-category': function(e){
//var id = $(e.target).attr('posts.name');
var id = $(e.target).parent().find("a").text();
console.log(id);

e.preventDefault();
Meteor.call('addingCategory', id, function(error, user){ console.log(id)});
}
});

服务器/user.js

Meteor.methods({
addingCategory: function(name) {

var cats = [{}];
cats.push(name);
console.log(Meteor.userId());
Meteor.users.update({
_id: Meteor.userId()
}, {
$set: {

name: name
}
});
}
});

这是 db.user.find() 中的用户,正如您可以使用

看到的

"name" : "a-reece"

它显然在插入名称,但我无法添加更多,我只能替换

{ "_id" : "4CHcZjSD4hCrqweGA", "createdAt" : ISODate("2016-07-13T21:38:59.505Z"), "services" : { "password" : { "bcrypt" : "$2a$10$lKZtrYSMD4EGPj6eamgFDuPZ41Jw52DgivBly3lUYWbGDtfZBg1X." }, "resume" : { "loginTokens" : [ { "when" : ISODate("2016-07-13T21:38:59.719Z"), "hashedToken" : "BsqTGedB2FkmSPO3+5I31rOM2+MPtF97Zc9tRQ4pf8Y=" } ] } }, "emails" : [ { "address" : "mun@les.com", "verified" : false } ], "roles" : [ "discoveror", "yes" ], "isAdmin" : true, "name" : "a-reece" }

如何添加更多名称而不是替换?

EDIT

Meteor.methods({
addingCategory: function(name) {

//Meteor.users.update(Meteor.userId(), { $addToSet: { name: name} } );
console.log(Meteor.userId());
//Meteor.users.update(Meteor.userId(), { $set: { "categories": cats }} );
Meteor.users.update({
_id: Meteor.userId()
},
{
$unset: {
name: name
}
},

{
$addToSet: {

name: name
}
});
}
});

ANSWER

 Template.CategoriesMain.events({
'click .toggle-category': function(e){
//var id = $(e.target).attr('posts.name');
var ob = $(e.target).parent().find("a").text();
var id = $.makeArray( ob );
console.log(id);

e.preventDefault();
Meteor.call('addingCategory', id, function(error, user){ console.log(id)});
}
});

最佳答案

您目前正在做的事情:

Meteor.users.update({ _id: Meteor.userId() }, { $set: { name: name } });

您有两个选择:$push$addToSet:

Meteor.users.update({ _id: Meteor.userId() }, { $push: { name: name } });

Meteor.users.update({ _id: Meteor.userId() }, { $addToSet: { name: name } });

前者插入数组,允许重复,后者避免重复。

您不需要:

var cats = [{}];
cats.push(name);

关于javascript - Meteor:如何将项目推送到用户集合并创建列表或数组,而不是用新项目替换每个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38362941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com