流星更新 $push 到单个记录中尚不存在的数组
Meteor update with $push to an array that doesn't already exist on a single record
我已经在 Whosebug 上找到了很多答案,但仍有问题。
首先,我在客户端的控制台或终端控制台中没有收到任何错误。 return 显示成功但未更新。
我在服务器上使用如下方法:
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
Meteor.methods({
'agentPageAccess'({userID, pageID}) {
Pages.update({ "PageID" : pageID }, {
$push: { "agentAccess" : { "agentID" : userID } }
});
}
});
这是调用更新前的数据。注意:该数组不存在,我希望添加它并在该新数组中更新数据,前提是该数组尚不存在。如果该数组已经存在,我希望它将新值推送到现有数组的末尾。
{ "_id" : "pPvQezHxC4J4tkGQg", "PageID" : "1234567", "PageName" : "Test Page", "PageToken" : "7654321" }
我已检查以确保 userID 和 pageID 在触发该方法时具有值。
这是客户端的方法调用:
Template.assignAgents.events({
'submit form': function(event) {
event.preventDefault();
let target = event.target;
let userID = target.userSelect.value;
let pageID = target.Page.value;
Meteor.call('agentPageAccess', {
userID: userID,
pageID: pageID
}, (err,res) => {
if(err){
alert(err);
}else{
alert("Agent assigned to page");
}
});
}
});
我是一个有多年经验的老程序员,但对 Meteor 还是个新手。所以请像我是这个平台的新手一样说话。非常感谢您的帮助!!
使用 $addToSet 代替 $pull。
$addToSet 将创建具有指定值的数组字段。
这里是 link 到 mongodb 文档 addToSet
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
Meteor.methods({
'agentPageAccess'({userID, pageID}) {
Pages.update({ "PageID" : pageID }, {
$addToSet: { "agentAccess" : { "agentID" : userID } }
});
}
});
我已经在 Whosebug 上找到了很多答案,但仍有问题。
首先,我在客户端的控制台或终端控制台中没有收到任何错误。 return 显示成功但未更新。
我在服务器上使用如下方法:
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
Meteor.methods({
'agentPageAccess'({userID, pageID}) {
Pages.update({ "PageID" : pageID }, {
$push: { "agentAccess" : { "agentID" : userID } }
});
}
});
这是调用更新前的数据。注意:该数组不存在,我希望添加它并在该新数组中更新数据,前提是该数组尚不存在。如果该数组已经存在,我希望它将新值推送到现有数组的末尾。
{ "_id" : "pPvQezHxC4J4tkGQg", "PageID" : "1234567", "PageName" : "Test Page", "PageToken" : "7654321" }
我已检查以确保 userID 和 pageID 在触发该方法时具有值。
这是客户端的方法调用:
Template.assignAgents.events({
'submit form': function(event) {
event.preventDefault();
let target = event.target;
let userID = target.userSelect.value;
let pageID = target.Page.value;
Meteor.call('agentPageAccess', {
userID: userID,
pageID: pageID
}, (err,res) => {
if(err){
alert(err);
}else{
alert("Agent assigned to page");
}
});
}
});
我是一个有多年经验的老程序员,但对 Meteor 还是个新手。所以请像我是这个平台的新手一样说话。非常感谢您的帮助!!
使用 $addToSet 代替 $pull。 $addToSet 将创建具有指定值的数组字段。 这里是 link 到 mongodb 文档 addToSet
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
Meteor.methods({
'agentPageAccess'({userID, pageID}) {
Pages.update({ "PageID" : pageID }, {
$addToSet: { "agentAccess" : { "agentID" : userID } }
});
}
});