Доступ к mongodb во время запуска метеорита возможен? - PullRequest
0 голосов
/ 11 февраля 2020

есть ли способ доступа к mongodb во время Meteor.startup()

Мне нужно вставить / обновить документ в коллекции во время Meteor.startup()

Я пытался:

// https://www.npmjs.com/package/mongodb
const MongoClient = require('mongodb').MongoClient; 

// await may be missing but when i use await, i get a reserved keyword error
const mongodb = MongoClient.connect(process.env.MONGO_URL)

mongodb.collection('collection').insertOne(objectData)

// Error
// TypeError: mongodb.collection is not a function
// at Meteor.startup (server/migrations.js:1212:23)

и

const col = Mongo.Collection('collection');

// Error
// TypeError: this._maybeSetUpReplication is not a function
// at Object.Collection [as _CollectionConstructor] (packages/mongo/collection.js:109:8)

Кто-нибудь получил решение?

1 Ответ

1 голос
/ 11 февраля 2020

Причина возникновения ошибки не в том, что вы обращаетесь к mongodb в методе startup, а в том, что метод MongoClient.connect является асинхронным, следовательно, вы можете получить доступ к вашим коллекциям mongodb только после разрешения метода connect , Вместо этого вы должны попробовать что-то вроде этого:

const MongoClient = require('mongodb').MongoClient;

MongoClient.connect(process.env.MONGO_URL, null, (err, client) => {
  const db = client.db();
  // You can now access your collections
  const collection = db.collection('collection');
  // NOTE: insertOne is also asynchronous
  collection.insertOne(objectData, (err, result) => {
    // Process the reult as you wish
    // You should close the client when done with everything you need it for
    client.close();
  });
})

Для получения дополнительной информации о подключении через MongoClient, проверьте здесь .

...