棉花糖扭曲的klein

时间:2018-03-23 04:34:23

标签: python twisted

我开始使用扭曲的klein,并且已经能够使用txmongo在数据库中插入数据。

我创建了一个数据库模型:

class Database():

    def __init__(self, uri):
        self.mongo_uri = uri
        self.mongo = None
        self.db = None

    @defer.inlineCallbacks
    def initialize(self):
        if self.db is None:
            self.mongo =  yield ConnectionPool(self.mongo_uri)
            self.db = self.mongo.local

    @defer.inlineCallbacks
    def insert(self, collection, data):
        yield self.db[collection].insert(data)

然后在控制器中调用insert方法:

@app.route('/teste', methods=['POST'])
def save_item(request):
    request.setHeader('Content-Type', 'application/json')
    body = json.loads(request.content.read())
    db.insert('teste', body)
    return json.dumps({'success': True})

它有效,但我有两个问题:

  1. 这是否同步?
  2. 我可以使用Marshmallow库吗? 用扭曲的klein序列化和验证数据?

1 个答案:

答案 0 :(得分:0)

所以,我改变了后来的实现。现在我的dao.py文件看起来像这样:

import Rebase from 're-base';

var base = Rebase.createClass({
   apiKey: "*****",
   authDomain: "*****",
   databaseURL: "*****",
   storageBucket: "*****",
   messagingSenderId: "*****"
});

export default base;

我的controllers.py文件如下所示:

from txmongo.connection import ConnectionPool
from twisted.internet import defer

class Database():

    def __init__(self, uri):
        self.mongo_uri = uri
        self.mongo = None
        self.db = None

    @defer.inlineCallbacks
    def initialize(self):
        if self.db is None:
            self.mongo =  yield ConnectionPool(self.mongo_uri)
            self.db = self.mongo.local

    def insert(self, collection, data):
        return self.db[collection].insert(data)

    def drop(self, collection):
        return self.db[collection].drop()

现在我可以异步制作一个简单的CRUD(虽然缺少更新)。