我正在寻找一个解决方案,铁路由器在渲染之前正在等待我的集合上的成功查找方法.
我的路线看起来像这样:
this.route('business', {
path : '/business/:type/:_id',
waitOn : function () {
return Meteor.subscribe('business', this.params._id);
},
data : function () {
return Business.findOne({_id: this.params._id});
}
});
Run Code Online (Sandbox Code Playgroud)
这很好用.铁路由器似乎在等待Collection的订阅,以便为客户端获取正确的文档.但是我的模板中需要的数据延迟了findOne函数.
Template.businessItemItem.rendered = function () {
console.log(Router.current().data()); // undefined
window.setTimeout(function(){
console.log(Router.current().data()); // [Object]
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
解决方案 对于遇到同样问题的每个人 只需为您的路线添加"action"方法,如下所示:
action : function () {
if (this.ready()) this.render();
}
Run Code Online (Sandbox Code Playgroud)
有了这个方法,一切都适合我.
这里解释了更新数组内的元素:
https://docs.mongodb.com/manual/reference/operator/update/set/#set-elements-in-arrays
但在文档中似乎缺少数组在文档中尚不存在的情况。例子:
如果有这个文件:
{
_id: 'some-id',
otherprops: 'value'
}
Run Code Online (Sandbox Code Playgroud)
我希望它变成这样:
{
// ...
settings: {
friends: [
{
name: 'John Doe',
age: 28
}
]
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我不知道是否已经有一个settings.friends数组。所以我的查询如下所示:
{
$set: {
'settings.friends.0.name': 'John Doe',
'settings.friends.0.age': 28
}
}
Run Code Online (Sandbox Code Playgroud)
然而文档的结果是这样的:
{
// ...
settings: {
friends: {
0: {
name: 'John Doe',
age: 28
}
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制 mongodb 在我的示例中创建一个数组而不是一个对象,但仅使用点符号。
我正在寻找一种解决方案,为我的PDF文档设置多个字体,这是用tcpdf创建的.
我想做这样的事情:
$pdf->SetFont('verdana_bold', 'B', 12);
$pdf->SetFont('verdana', '', 12);
Run Code Online (Sandbox Code Playgroud)
我的文档需要一个粗体字和一个普通字体.上面的例子不起作用.当我切换两行时,文本都是粗体.当我使用上面的例子时,文本只是常规的.
我想设置font-weight常规的CSS样式表.
希望你有一个解决方案.
在方法中调用时,似乎"Meteor.loginWithPassword"函数不起作用.
我想用autoforms创建我的登录表单,所以我创建了一个回调方法,在用户提交登录表单后调用该方法.表单被称为正确的方式,但loginWithPassword函数似乎不起作用.
这是我的方法(在客户端和服务器端)
Meteor.methods({
autoform_test_login : function (doc) {
console.log('Called login method');
if (Meteor.isClient) {
Meteor.loginWithPassword('test', 'test', function(e) {
if (e) {
console.log(e);
}
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
提交时,我的autoforms调用此方法:
{{#autoForm schema="Schema_Login" id="form_login" type="method" meteormethod="autoform_test_login"}}
....
Run Code Online (Sandbox Code Playgroud)
提交此表单时,我收到此错误:
Error: No result from call to login {stack: (...), message: "No result from call to login"}
Run Code Online (Sandbox Code Playgroud)
当我现在打开浏览器控制台并键入:
Meteor.call('autoform_test_login');
Run Code Online (Sandbox Code Playgroud)
我会得到同样的错误.
但是:当我在我的控制台中输入以下内容时它可以工作(现在的错误是:找不到用户名):
Meteor.loginWithPassword('test', 'test', function(e) {
if (e) {
console.log(e);
}
});
Run Code Online (Sandbox Code Playgroud)
我的方法绝对没有别的,然后这个剪断,所以我问自己这里出了什么问题.
Ps.:我知道我将"test"添加为Username,将"test"添加为密码 - 仅用于测试.即使输入正确,错误总是相同的.
在我的情况下,我尝试创建一个简单的表单组件 - 主要用于"测试"reactjs并使用它.
为此,我使用2个组件.第一个Component是Parent,即"Form"组件.第二个Component是表单的字段 - 例如简单的文本字段.这是它看起来像的标记:
<Form
schema={MyFormSchema}
>
<Input name="name" />
<Input name="age" />
</Form>
Run Code Online (Sandbox Code Playgroud)
在MyFormSchema中,我拥有"输入"类型的每个子项所需的所有信息.对于这种情况,我在我的"表单"组件中完成了这个:
Form.jsx
Form = React.createClass({
renderChildren() {
return React.Children.map(this.props.children, (child)=>{
if (child.type && child.type.prototype && child.type.prototype.constructor.displayName === 'Input') {
let additionalProps = {
fieldSchema: this.props.schema.pick(child.props.name),
onChange: this.onChange
};
return React.cloneElement(child, additionalProps);
}
return child;
});
},
render() {
return(
<form>
{this.renderChildren()}
</form>
);
}
});
Run Code Online (Sandbox Code Playgroud)
我在这里做的是"克隆"每个"输入"子项并根据模式添加一些新的道具.
所以第一个问题是:
这真的是reactJs的正确战争吗?当我没有"克隆"每个元素并添加新属性时,我必须直接在我的视图中添加属性,对吧?有点像但是我试图阻止这个因为我需要的所有信息我已经在我的表格模式中作为道具.
在玩完这个后我发现,这个.props.children只有第一级孩子.但是当我在我的Form组件中嵌套我的子项时,我的组件正在用Input被操作的组件替换组件将不再起作用.
例:
<Form
schema={MyFormSchema}
>
<AnotherComponent>
<Input name="name" />
</AnotherComponent>
<Input …Run Code Online (Sandbox Code Playgroud) 我有 2 张这样的表:
Table 'c'
| id | item_1 | item_2 |
-------------------------------
| 1 | 1 | 2 |
-------------------------------
Table 'i'
| id | name |
-------------------
| 1 | item |
-------------------
| 2 | item_2 |
-------------------
Run Code Online (Sandbox Code Playgroud)
不,我需要从表 c 中获取结果包括项目的名称。所以我为此建立了一个内部联接。
SELECT c.*, i.name FROM c
INNER JOIN i ON
c.item_1 = i.id
OR
c.item_2 = i.id
Run Code Online (Sandbox Code Playgroud)
这工作“很好”。但我得到这样的回报:
| id | item_1 | item_2 | name |
----------------------------------------
| 1 | 1 | 2 | item_2 | …Run Code Online (Sandbox Code Playgroud) 我尝试为我的meteor应用程序定义验证功能.我必须在客户端验证后期数据,但也要在服务器端验证,以防止操作.
因为这个我定义了dir myApp/lib/validation /中的函数
我在表单上添加了一个提交事件,并调用了meteorjs方法.在这个方法中,我调用我的验证函数.
myApp/lib/validation /中的验证功能:
function Validation (post) {
this.validate = function () {
console.log(post)
return true;
};
};
Run Code Online (Sandbox Code Playgroud)
在myApp/client/manager /中提交事件:
Template.UserRegisterForm.events({
'submit form' : function(e) {
e.preventDefault();
var post = {test : 'success'};
Meteor.call('userRegisterFormPost', post, function(error, postdata) {
});
}
});
Run Code Online (Sandbox Code Playgroud)
myApp/lib/methodes /中的Methode:
Meteor.methods({
userRegisterFormPost : function(attr) {
var validate = new Validation(attr);
}
});
Run Code Online (Sandbox Code Playgroud)
这并没有工作,因为"验证没有定义".也许我不是以正确的方式理解meteorjs的架构所以也许你可以告诉我如何解决我想做的这个简单步骤?
如何在Drupal中呈现YouTube源代码?包含信息的字段包含:
[fid] => 59
[display] => 1
[description] =>
[uid] => 1
[filename] => Retarded running giraffe
[uri] => youtube://v/Cn59jVAHLTs
[filemime] => video/youtube
[filesize] => 0
[status] => 1
[timestamp] => 1340129371
[type] => video
[rdf_mapping] => Array
Run Code Online (Sandbox Code Playgroud)
有没有办法将此信息呈现给YouTube-Video嵌入代码?像这样的东西:
drupal_render_youtube('youtube://v/Cn59jVAHLTs');
Run Code Online (Sandbox Code Playgroud)
有没有解决方案可以解决这个问题而不用自己编写漏洞嵌入代码?
我尝试创建一个具有最后一个键值的对象.我只有一个带有键和值的数组但不知道如何在javascript中不使用引用来创建对象.
据我所知,没有办法在javascript中创建变量的引用.
这就是我所拥有的:
var value = 'test';
var keys = ['this', 'is', 'a', 'test'];
Run Code Online (Sandbox Code Playgroud)
这就是我要的:
myObject: {
this : {
is: {
a : {
test : 'test'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
知道我怎么能用JavaScript做到最好吗?
我正在使用Ubuntu 13.10 lokal并在其上运行我的meteorJs应用程序.我的MongoDB是一个外部数据库(modulus.io).
我在我的控制台中设置了我的mongoDb,如下所示:
sudo MONGO_URL='mongodb://login@db' meteor
Run Code Online (Sandbox Code Playgroud)
工作良好.
但每次当我重新启动我的lokal meteorJs应用程序时,此设置似乎是重新设置!因此,每当我重新启动我的应用程序时,我必须一次又一次地设置环境变量......
有没有办法在我的meteorJs应用程序中设置此变量永久,所以我不必一次又一次地重新设置它.