我想为所有用户提供一组特定字段的客户端访问权限,而我希望只能访问当前用户的更多字段.我如何编写发布代码来完成此任务?
我正在使用mrt add accounts-ui-bootstrap-dropdown并mrt add accounts-password在我的应用程序上运行一个简单的登录页面.
帐户用户给了我一个很好的哈希,包含id,createdAt,电子邮件等.
如果我想在此哈希中添加其他字段,以便稍后可以使用它们,我该怎么做?例如,我想要输入他们的名字和姓氏:
"given_name":"John","姓":"Doe"
我正在使用Jest测试我的GraphQL api.
我正在为每个查询/突变使用单独的测试套装
我有2次测试(每一个在一个单独的测试套),其中我嘲笑一个函数(即,流星的callMethod),其在突变使用.
it('should throw error if email not found', async () => {
callMethod
.mockReturnValue(new Error('User not found [403]'))
.mockName('callMethod');
const query = FORGOT_PASSWORD_MUTATION;
const params = { email: 'user@example.com' };
const result = await simulateQuery({ query, params });
console.log(result);
// test logic
expect(callMethod).toBeCalledWith({}, 'forgotPassword', {
email: 'user@example.com',
});
// test resolvers
});
Run Code Online (Sandbox Code Playgroud)
当console.log(result)我得到
{ data: { forgotPassword: true } }
Run Code Online (Sandbox Code Playgroud)
这种行为不是我想要的,因为在.mockReturnValue我抛出一个错误,因此期望result有一个错误对象
然而,在此测试之前,另一个是运行
it('should throw an error if wrong credentials …Run Code Online (Sandbox Code Playgroud) 我正在为Meteor服务器分配方法,如下所示:
在bootstrap.js中
Meteor.startup(function () {
Meteor.methods({
foo: function () {
return 1;
},
bar: function () {
// QUESTION: HOW TO CALL Meteor.methods.foo
return 1 + foo;
}
});
});
Run Code Online (Sandbox Code Playgroud) 使用Meteor,我试图了解何时使用服务器端,Meteor.methods()同时仍保留即时UI更新.
从Andrew Scala的介绍性教程中,他声称Meteor.methods()应该在您想要更新和修改数据库文档时使用:
我们的想法是,您定义服务器上执行修改和更新数据等危险内容的所有功能,然后让客户端调用这些函数并获取常规函数等返回值.客户端永远不会看到实现,也不会亲自修改数据.服务器完成所有工作.
遵循这个建议,我在我的代码中实现了这个:
服务器端:
Meteor.methods({
addMovie: function(data) {
var movie = Movies.insert({name: data});
return movie;
},
...
Run Code Online (Sandbox Code Playgroud)
客户端:
Template.movies.events = ({
'click #add-movie': function(e) {
var name = document.getElementById('movie-name').value;
Meteor.call('addMovie', name);
return false;
},
...
Run Code Online (Sandbox Code Playgroud)
这有效,但速度很慢.UI不会像Movies.insert()在客户端调用时那样立即更新.该文件表明,以纠正问题,您可以创建在客户端存根:
客户端上的调用方法定义与同名服务器方法关联的存根函数.如果您不希望,则不必为方法定义存根.在这种情况下,方法调用就像其他系统中的远程过程调用一样,您必须等待服务器的结果.
但这些存根应该是什么样的?它应该与服务器端方法基本相同吗?如果是这样,重点是什么?我正在寻找关于Meteor.methods()存根的使用和目的,点/使用及其实现的更全面的解释.
编辑:大卫格林斯潘已帮助阐明Meteor.methods()和存根在流星谈话中的使用.
文档指定使用模板{{> loginButtons}}实现默认登录按钮.
将自己的风格应用于此的最佳方法是什么?
!important有没有人将流星与移动前端框架集成在一起?
在使移动html5应用看起来"更原生"时,有许多CSS /前端框架.例如:
和更多.与普通的Bootstrap相比,主要的好处是:
但是这些框架通常使用自己的MVC模型,例如将内容预加载到屏幕外DIV并进行全屏转换.他们经常使用与Meteor/IronRouter冲突的内部路由器或Pushstate.而离子例如取决于角度......
有没有人在这种集成方面取得成功?任何线索赞赏.
我想在Meteor中创建一个应用程序,从我理解它首先加载到子目录中的手册,然后按照字母顺序.我的文件结构是这样的......
/server
/lib
/client
/lib
game.js -> already starts declaring the function "makeBoard(){}"
/template.js -> where the function "makeBoard()" is called.
Run Code Online (Sandbox Code Playgroud)
因此看起来错误函数"makeBoard()"不存在,只有当我在我想要调用它的同一文件中声明时才有效.即使我将文件"game.js"移动到"template.js"所在的目录,也会发生这种情况.我应该如何正确引用Meteor上不同文件中的资源?
让我的Meteor upsert功能正常工作有点麻烦.我相当(200行代码)新的,我有点麻烦.
该集合继续插入其他行,而不仅仅是更新.我花了30分钟的谷歌搜索,但我找不到任何我能理解的例子.
这是我的代码:
Values.upsert(
{
// Selector
source: "SourceOne",
currency: "USD"
},
{
// Modifier
value: res.data['data']['last']['value'],
time: Date.now(),
}
);
Run Code Online (Sandbox Code Playgroud)
我也试过了
if(Values.find(
{},{fields: {'source':"SourceOne", 'currency': "USD"}}
)) {
Values.update(
{
source: "SourceOne",
currency: "USD"
},
{
value: res.data['data']['last']['value'],
time: Date.now()
}
);
} else {
console.log('blah');
Values.insert({
source: "SourceOne",
currency: "USD",
value: res.data['data']['last']['value'],
time: Date.now()
});
}
Run Code Online (Sandbox Code Playgroud)
而且似乎还无法弄明白.
我需要以"mm-dd-yyyy"格式显示数据库中的日期.由于它以ISO格式保存,mongodb我如何在模板中转换它?这是我的代码.
Template.templatename.vname = function () {
return Posts.find();
}
Run Code Online (Sandbox Code Playgroud)
并在模板中
{{#each vname}}
{{ date }}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
现在它显示为 Tue Feb 04 2014 00:00:00 GMT+0530 (IST)
我需要把它表现为 mm-dd-yyyy