我已经开始创建一个流星应用程序,我想在我使用后台任务定义的一个mongoDB集合中插入文档。
例如,想想我每天都在阅读RSS订阅源并抓取网站上的新闻标题。
要求
我所知道的
我知道怎么做1.使用python,requests
和其他库。
我知道如何通过javascript在meteor中将信息添加到集合中,但是 NOT 通过后台任务添加todo
示例应用程序教程。
可能的解决方案
最少的例子来自this step of the todo app。
我想要自动化的步骤:
meteor mongo
db.tasks.insert( { text : 'New title' , createdAt: new Date() } );
其中New title
是某些报废/ RSS Feed的结果。
实现这一目标的最佳方法是什么?我对python比较流利,但对于JS和流星来说却是全新的。
其他评论
此外,我未在下面的示例中包含此内容,但我还想使用accounts-ui
和accounts-password
个包,并删除insecure
包。不确定这会如何影响后台进程的实现。
最小示例
(对不起,如果这不是很小但不确定如何缩小它)
的客户机/ main.html中
<head>
<title>Todo List</title>
</head>
<body>
<div id='render-target'></div>
</body>
的客户机/ main.jsx
import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import App from '../imports/ui/App.jsx';
Meteor.startup( () => {
render( <App/> , document.getElementById( 'render-target' ) );
});
服务器/ main.js
import '../imports/api/tasks.js'
进口/ API / tasks.js
import { Mongo } from 'meteor/mongo';
export const Tasks = new Mongo.Collection( 'tasks' );
进口/ UI / App.jsx
import React , { Component , PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import { Tasks } from '../api/tasks.js';
import Task from './Task.jsx';
class App extends Component {
renderTasks() {
return this.props.tasks.map( ( task ) => (
<Task key={task._id} task={task} />
) );
}
render() {
return (
<div className='container'>
<header>
<h1>Todo List</h1>
</header>
<ul>
{ this. renderTasks() }
</ul>
</div>
);
}
}
App.propTypes = {
tasks : PropTypes.array.isRequired,
};
export default createContainer( () => {
return {
tasks : Tasks.find( {} ).fetch(),
};
} , App );
进口/ UI / Task.jsx
import React, { Component , PropTypes } from 'react';
// Task component - represents a single todo item
export default class Task extends Component {
render() {
return (
<li>{this.props.task.text}</li>
);
}
}
Task.propTypes = {
// This component gets the task to display through a React prop.
// We can use propTypes to indicate it is required
task: PropTypes.object.isRequired,
};
答案 0 :(得分:1)
使用您最熟悉的语言和工具进行抓取和插入,因为您提到python我认为这将是您的选择。 Pymongo可以很容易地将python dicts编写成mongo。
您可以运行自己的mongo版本或访问默认版本。要获取默认的连接字符串,请cd进入meteor目录并键入:
$ meteor mongo -U
它可能类似于mongodb://127.0.0.1:3001 / meteor。所以,从python连接到它:
from pymongo import MongoClient
connection = MongoClient("mongodb://127.0.0.1:3001/meteor")
db = connection.meteor.tasks
然后执行插入:
db.insert({ 'text' : title , 'createdAt': datetime.datetime.utcnow()} )
如果您使用自己的数据库,则响应性流星组件将每十秒更新一次(轮询)。如果您使用默认值,它将是即时的。