【发布时间】:2016-02-01 15:10:52
【问题描述】:
我正在尝试使用 accounts-password 包连接到 onCreateUser 函数,以便在创建帐户时将信息添加到另一个集合中。我已将这段代码添加到 server.js 中
//server.js
var ShopDetails = {
name = "",
postCode = "",
type = "";
openTime = "",
closeTime = "",
phoneNum = 0,
dashboardDetails = false //until shop populates these fields
createdBy = user._id //_id taken from function below
}
Accounts.onCreateUser(function(options,user){
var userId = user._id;
ShopList.insert(shopDetails);
return user;
});
我在应用程序中拥有的两个集合是 -
- ShopList = new Mongo.Collection("shopList") //保存在集合文件夹中
- 与帐户密码捆绑在一起的用户集合
一旦新用户创建了一个帐户,我想将一个包含所有必需字段 (shopDetails) 的对象插入到 ShopList 集合中(为了以后为每个商店创建个人仪表板)。但是,在创建了几个测试帐户后,我在 RoboMongo 的 ShopList 集合中看不到它们,我知道正在插入用户帐户,因为我可以在用户集合中看到它们。谁能告诉我哪里出错了?谢谢
【问题讨论】:
-
您是否看到服务器错误?我想是这样的,因为
ShopDetails是在onCreateUser回调的上下文之外声明的,所以当您尝试获取user._id时,user将是未定义的。 -
抱歉回复晚了。我意识到 server.js 没有作为 JS 文件执行,导致 (a) ShopList 未使用信息更新 (b) 服务器代码中的各种错误在应用程序运行时未显示。感谢richsilv,一旦启动并运行,我确实遇到了该错误并设法纠正它。谢谢 Ethaan,我不知道使用插入时的可选回调,这很整洁。今晚晚些时候我会研究 hooks 包。