流星方法404错误,但登录控制台

时间:2019-06-18 01:37:58

标签: javascript meteor

我调用Meteor方法,但显示错误消息:

  

未找到方法'users.insertotp'[404]

但是以某种方式执行console.log,为什么?

我在这里做什么错了?

您可以在github此处查看代码。

文件:imports / api / db.js

ENV PORT 8080

文件:imports / ui / Signup.js

export const Otp   = new Mongo.Collection('otp');
Meteor.methods({
    'users.insertotp' (otp) {
        // if(!this.userId) {
        //     throw new Meteor.Error('not-authorized');
        // }
        console.log('otp',otp);
        return Otp.insert({
            otp,
            userId: this.userId,
            updatedAt: moment().valueOf()
        });
    }
});

1 个答案:

答案 0 :(得分:1)

您的imports/api/db.js文件是在客户端上导入的,而不是在服务器上导入的。

您的client/main.js定义了一些路由,其中​​imports/ui/Signup.js确实导入了imports/api/db.js并立即调用了方法。

另一方面,您的server/main.js仅导入imports/api/users.js,而不会导入其他api文件。

因此您的客户知道方法,因此,由于流星延迟补偿又名 optimistic用户界面,它能够在浏览器控制台中打印日志 aka客户存根。但是您的服务器不知道,因此它会返回404错误。

只需将db文件也导入到服务器的主条目文件中,Meteor就会发挥作用。