Meteor.js + Mongo: как я могу писать в свою коллекцию Mongo из внешнего процесса?

У меня есть приложение Meteor, работающее на Heroku с надстройкой базы данных Mongo через Compose (ранее MongoHQ).

Я хотел бы вставлять документы в эту базу данных из совершенно другого приложения (Python/Django, а не Meteor). Итак, я установил pymongo в свое приложение Django, правильно настроил URI подключения для mongodb и так далее.

Однако, когда я пытаюсь вызвать следующую строку:

my_dict_collection.update({'id': my_dict['id']}, my_dict, upsert=True)

Я получаю следующую ошибку:

OperationFailure: not authorized for upsert on meteor.my_dict_collection

Почему это происходит, и как я могу пройти через это?


person jononomo    schedule 07.11.2014    source источник


Ответы (2)


В качестве альтернативы вы можете просто создать метод Meteor.method в своем приложении, а затем вызвать его с помощью клиента ddp. См. http://www.meteorpedia.com/read/DDP_Clients#Python.

person zimt28    schedule 07.11.2014

Если вы можете выполнять upsert ops в метеоре, вы сможете делать их и в любом другом приложении.

Вы настроили его следующим образом?

DATABASES = {
    'default' : {
        'ENGINE' : 'django_mongodb_engine',
        'NAME' : 'my_database',
        'HOST' : 'database_host',
        'PORT' : 'database_port',
        'USER' : 'database_user',
        'PASSWORD' : 'database_password',
        'OPTIONS' : {
            'slave_okay' : True,
            'tz_aware' : True,
            'network_timeout' : 42,
            ...
        }
    }
}

см. документацию здесь.

Используя учетные данные, которые вы получаете от:

heroku config:get MONGO_URL

Он должен дать вам URL-адрес mongodb в формате:

mongodb://database_user:database_password@database_host:database_port/database_name

Приведенный выше URL-адрес может содержать список альтернативных имен хостов, разделенных запятыми. Я не уверен, поддерживает ли это django-mongodb, поэтому вам, возможно, придется использовать только один из них.

person d_inevitable    schedule 07.11.2014
comment
Спасибо! Я также не использую django-mongodb. Я использую правильный URI mongodb, который я получил из конфигурации heroku, как вы описали. Я не настраиваю соединение с базой данных Mongo в settings.py, а просто передаю полный URI в pymongo.MongoClient(). Можно ли настроить две базы данных в settings.py? - person jononomo; 08.11.2014
comment
Да, ты можешь. В приведенном выше примере эта база данных будет назначена по умолчанию. Вы можете добавить больше баз данных под любым именем. - person d_inevitable; 08.11.2014
comment
Похоже, что django-mongodb-engine требует от меня использования форка Django. Я бы предпочел просто придерживаться стандартного Django. См.: stackoverflow.com/questions/26812274/ - person jononomo; 08.11.2014