【发布时间】:2018-01-03 01:21:02
【问题描述】:
在 ostrio:files 文档中使用了 findOne 函数,这在我的情况下并不方便,我需要带有参数的 find() 以按用户 ID 等进行过滤。
我使用官方教程中常见的 Meteor React 方法如下:
renderImages(){
return this.props.images.map((image) => (
<Pic src={image.link()} />
));
}
render() {
...
return (
<form>
<FormGroup controlId="formControlsFile">
<Media>
{this.renderImages()}
</Media>
...
</FormGroup>
</form>);
}
}
export default createContainer(props => {
Meteor.subscribe("files.images.all");
return {
images: Images.find({name: "1.jpeg"}).fetch(),
}
}, App);
这里是收藏:
import { Meteor } from 'meteor/meteor';
import { FilesCollection } from 'meteor/ostrio:files';
const Images = new FilesCollection({
collectionName: 'Images',
allowClientCode: false, // Disallow remove files from Client
onBeforeUpload(file) {
...
});
if (Meteor.isServer) {
Meteor.publish('files.images.all', function () {
return Images.find().fetch();
});
}
export default Images;
和图片元素:
import React from 'react';
import {createContainer} from 'meteor/react-meteor-data'
class Pic extends React.Component {
render() {
return (
<img width={64} height={64} src={this.props.src} alt="Image"/>
);
}
}
export default createContainer(props => {
console.log("Image src: " + props.src);
return {
src: (props.src ? props.src : "no-image-64x64.jpg"),
}
}, Pic);
此代码导致以下异常:
I20170727-13:46:02.470(3)? Exception from sub files.images.all id uXo24fBLqH8rsMiDy Error: Publish function returned an array of non-Cursors
I20170727-13:46:02.472(3)? at [object Object]._.extend._publishHandlerResult (packages/ddp-server/livedata_server.js:1098:20)
I20170727-13:46:02.472(3)? at [object Object]._.extend._runHandler (packages/ddp-server/livedata_server.js:1060:10)
I20170727-13:46:02.473(3)? at [object Object]._.extend._startSubscription (packages/ddp-server/livedata_server.js:859:9)
I20170727-13:46:02.473(3)? at [object Object]._.extend.protocol_handlers.sub (packages/ddp-server/livedata_server.js:625:12)
I20170727-13:46:02.474(3)? at packages/ddp-server/livedata_server.js:559:43
【问题讨论】:
标签: file reactjs meteor collections