我调用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()
});
}
});
答案 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就会发挥作用。