1

我嘗試在autoform插入到另一個集合(Meteor.users)後插入到用戶配置文件數組中。流星Autoform,集合鉤子 - 集合插入後如何插入用戶配置文件數組?

我的簡單模式陣列設置這樣的 -

listings: { 
type: [String], 
optional: true 
}, 
"listings.$.id": { 
type: String, 
optional: true 
} 

(輪廓模式中),這是我收集掛機方法應該上市插入後插入。

//Add listing to user collection on submit 
Listings.after.insert(function(userId, doc) { 
console.log("STUFF"); 
Meteor.users.update({_id : userId}, 
{ 
    $push : 
    { 
     'profile.listings.$.id' : this._id 
    } 
} 

在我看來,這應該工作。表單正確插入沒有集合掛鉤,但現在當我提交表單,我得到這個錯誤在我的JS控制檯:

錯誤:篩選出不在模式中的鍵後,您的修改器現在爲空(...)

console.log(「stuff」)觸發器,我在控制檯中發現錯誤之前。

任何人有任何想法如何做到這一點?

編輯 - 固定的幾件事情通過它切換到:

Listings.after.insert(function(userId, doc) { 
console.log("STUFF" + userId + '  ' + this._id); 
Meteor.users.update({_id: userId }, 
{ 
    $set : 
    { 
     "profile.listings.$.id" : this._id 
    } 
} 

) });

現在我不能插入到數組中,因爲$操作符。

回答

1

假設上市只是與id領域對象的數組,你可以這樣做:

listings: { 
    type: [Object], 
    optional: true 
}, 
"listings.$.id": { 
    type: String, 
    optional: true 
} 

Listings.after.insert(function(userId, doc) { 
    var id = this._id; 
    Meteor.users.update({_id: userId }, { 
    $push : { 
     "profile.listings" : { id: id } 
    } 
    }); 
}); 

這改變了您的物品從一個字符串數組對象數組 - 你不能有一個屬性的字符串上的id。然後這可以讓你在profile.listings數組上執行$ push操作。如果你真的只是存儲在列表的ID,雖然,你可以進一步簡化這個:

listings: { 
    type: [String], 
    optional: true 
} 

Listings.after.insert(function(userId, doc) { 
    var id = this._id; 
    Meteor.users.update({_id: userId }, { 
    $push : { 
     "profile.listings" : id 
    } 
    }); 
}); 

也許你留下了一些代碼,但是與您現有的架構,你不需要任何東西,但數組字符串 - 不需要id屬性。

+0

在短短的一秒鐘內就能拍出這張照片,非常感謝。 – bolle

+0

你是男人!非常感謝,我也複製了我如何使用個人資料圖片模式。 – bolle