gpt4 book ai didi

javascript - 我如何捕获 Meteor.Error 警报并将其从 Meteor.Methods 插入到客户端数据库中?

转载 作者:行者123 更新时间:2023-11-28 20:11:08 24 4
gpt4 key购买 nike

我只是在Meteor中编写一个错误通知面板,在这里我创建了一个客户端mongodb,但我无法通过 throwError 函数将Meteor.Error消息推送到该客户端数据库,目前它显示在警报框中

集合/signup.js

signupDB = new Meteor.Collection('signup');

Meteor.methods({

signupSubmit : function(postData) {

var signinEmailExist = signinDB.findOne({
email : postData.email
});

if (postData.email && signinEmailExist)
throw new Meteor.Error(422, "exist in signinDB");

var signupEmailExist = signupDB.findOne({
email : postData.email
});

if (postData.email && signupEmailExist)
throw new Meteor.Error(422, "exist in signupDB"); //

var user = _.extend(_.pick(postData, 'email', 'password'), {
insert_time : new Date().getTime() });

var userId = signupDB.insert(user);

return userId;

}

});

客户端/错误/error.js

errorDB = new Meteor.Collection(null);

throwError = function(data) {
errorDB.insert({data: "in throwError", del: "N"})
}

errorDB.insert({data: "in signup", del: "N"}) 代码在客户端文件夹内的任何位置工作

此处无法调用 throwError 函数,但在警告框中显示了signupSubmit 方法错误

发布/订阅的问题是否像我们所想的那样(不是为注册数据库编写的)?

我如何捕获 Meteor.Error 警报并将其从 Meteor.Methods 插入到客户端数据库中?

是否还有像 throwError 这样的其他函数来捕获 Meteor.Methods 错误?

最佳答案

你是如何调用该方法的?您需要执行以下操作:

Meteor.call('signupSubmit', user, function(err) {
errorDB.insert(err);
});

但是,您似乎正在实现一个自定义的、不安全的身份验证系统。你不应该这样做; Meteor 有一个很棒、安全的内置功能 Accounts包裹。您需要做的就是(在客户端):

errors = new Meteor.Collection;

Accounts.createUser({
email: email,
password: password
}, function(err) {
errors.insert(err);
});

如果用户名/电子邮件重复,Accounts.createUser 方法会自动返回错误。

关于javascript - 我如何捕获 Meteor.Error 警报并将其从 Meteor.Methods 插入到客户端数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com