我已經開始創建一個流星應用程序,並且我想在我使用後臺任務定義的mongoDB集合之一中插入文檔。Meteor/python/mongoDB - 如何從後臺運行進程更新mongoDB?
想一想,例如,我每天都在閱讀RSS feed併爲網站蒐集新聞標題。
要求
- 閱讀RSS提要,並颳去必要的網站。
- 將新標題放入流星應用程序使用的mongoDB集合中。
我知道什麼
我知道該怎麼做1.使用python,與requests
和其他庫。 我知道如何通過javascript在流星中將信息添加到集合中,但通過遵循todo
示例應用程序教程,通過後臺任務執行而不是。
可能的解決方案
- 獲取蟒蛇的數據,然後通過該蟒蛇數據添加到MongoDB的集合。然後這將在某種後臺進程上運行在服務器上。
- 使用某種流星庫,允許我運行後臺任務和webscraping,然後我可以使用它來更新集合。
最小的例子是從this step of the todo app。
步驟我要自動化:
meteor mongo
db.tasks.insert({ text : 'New title' , createdAt: new Date() });
其中New title
是一些報廢/ RSS饋送的結果。
達到此目的的最佳方法是什麼?我在Python中相當流利,但對JS和流星來說是全新的。
其他意見
而且,我還沒有在下面這個例子中包括這一點,但我也想用accounts-ui
和accounts-password
包,將刪除insecure
包。不知道這是如何影響後臺進程的實現的。
小例子
(對不起,如果這是不是很小,但不知道如何使它更小)
- 客戶
- 爲主。HTML
- main.jsx
- 服務器
- main.js
- 進口
- API
- tasks.js
- UI
- App.jsx
- Task.jsx
- API
客戶機/ 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,
};
你是上帝送來的!好吧,聽起來像從Python做它是要走的路。我最後的問題是,從python這樣做我不必擔心認證等等?也就是說,在mongo中,您向客戶端「發佈」方法的相同方式是,我必須將某些內容發佈到我的Python腳本中? – evan54
我想通了。我只是能夠獨立於身份驗證等插入項目的數據庫。回想起來,這似乎很明顯,因爲我猜數據庫本身沒有驗證任何東西 – evan54
對不起,我沒有回答!我只是注意到你的問題。 – sgbirch