Meteor 和 MongoDB:如何在 table 中设置对象
Meteor and MongoDB: How to set an object in a table
我对 Meteor 和 MongoDB 有疑问。我正在编写一个小游戏。我使用 accounts-ui 并在创建帐户时向该帐户添加一些字段:
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [];
return user;
})
如您所见,我有一个名为 "employees" 的 table。
当用户单击按钮以雇用员工时,我想更新此 table。假设用户雇用了一名程序员,我想像这样更新我的 table :
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [{"programmer": 1}];
return user;
})
如果用户雇用其他程序员我想增加程序员的数量。如果用户雇用设计师,我想将其添加到 table 中,如下所示:
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [{"programmer": 2}, {"designer": 1}];
return user;
})
我是 Meteor 的初学者,MongoDB,我不明白我该怎么做。
如果您的 employees
是您描述的键值对,我会使用对象而不是数组。
user.employees = {};
它使 MongoDB 操作更容易:
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1}});
此服务器端代码为用户的程序员增加了一位。如果用户还没有程序员,此代码将创建第一个。
您可以像这样向用户添加 employees
属性:
Accounts.createUser( {
username: 'test',
email: 'email@email.com',
password: 'test',
employees: {}
});
并更新 employees
:
添加员工
Meteor.users.update(idUser, {$addToSet: {employees: {'a': 1}}});
Meteor.users.update(idUser, {$addToSet: {employees: {'b': 1}}});
增加员工人数a
:
Meteor.users.update(idUser, {$pull: {employees: {'a': 1}}});
Meteor.users.update(idUser, {$addToSet: {employees: {'a': 2}}});
您可以像这样简单地编写查询:
If( programmer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1}});
} else if ( designer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.designer": 1}});
} else if ( programmer and designer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1, "employees.designer": 1}});
}
我对 Meteor 和 MongoDB 有疑问。我正在编写一个小游戏。我使用 accounts-ui 并在创建帐户时向该帐户添加一些字段:
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [];
return user;
})
如您所见,我有一个名为 "employees" 的 table。
当用户单击按钮以雇用员工时,我想更新此 table。假设用户雇用了一名程序员,我想像这样更新我的 table :
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [{"programmer": 1}];
return user;
})
如果用户雇用其他程序员我想增加程序员的数量。如果用户雇用设计师,我想将其添加到 table 中,如下所示:
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 0;
user.employees = [{"programmer": 2}, {"designer": 1}];
return user;
})
我是 Meteor 的初学者,MongoDB,我不明白我该怎么做。
如果您的 employees
是您描述的键值对,我会使用对象而不是数组。
user.employees = {};
它使 MongoDB 操作更容易:
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1}});
此服务器端代码为用户的程序员增加了一位。如果用户还没有程序员,此代码将创建第一个。
您可以像这样向用户添加 employees
属性:
Accounts.createUser( {
username: 'test',
email: 'email@email.com',
password: 'test',
employees: {}
});
并更新 employees
:
添加员工
Meteor.users.update(idUser, {$addToSet: {employees: {'a': 1}}}); Meteor.users.update(idUser, {$addToSet: {employees: {'b': 1}}});
增加员工人数
a
:Meteor.users.update(idUser, {$pull: {employees: {'a': 1}}}); Meteor.users.update(idUser, {$addToSet: {employees: {'a': 2}}});
您可以像这样简单地编写查询:
If( programmer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1}});
} else if ( designer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.designer": 1}});
} else if ( programmer and designer hired ) {
Meteor.users.update({_id: someId}, {$inc: {"employees.programmer": 1, "employees.designer": 1}});
}