[英]Is there an easier way to push to a JSON array or create the array if it doesn't already exist?
[英]Meteor update with $push to an array that doesn't already exist on a single record
我已經通過 StackOverflow 上的許多答案,但仍然遇到問題。
首先,我在客戶端的控制台或終端控制台中沒有收到任何錯誤。 返回說成功但它沒有更新。
我在服務器上使用如下方法:
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 不熟悉。 所以請像我是這個平台的新手一樣說話。 非常感謝你們的幫助!!
代替 $pull 使用 $addToSet。 $addToSet 將創建具有指定值的數組字段。 這里是 mongodb doc addToSet的鏈接
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
Meteor.methods({
'agentPageAccess'({userID, pageID}) {
Pages.update({ "PageID" : pageID }, {
$addToSet: { "agentAccess" : { "agentID" : userID } }
});
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.