2016-08-09 3 views
1

Мне нужно вставить документ в коллекцию, которая имеет значение ObjectId и значение BinData. Поэтому я не знаю, как его вставить.Как добавить двоичные данные с objectId в mongoDB?

С помощью этого кода я получаю ошибку TypeError: Cannot read property 'ObjectId' of undefined.

сервера/fixtures.js

var ObjectId = Mongo.ObjectID; 
var chunk = { 
      "_id"  : ObjectId("57a9be3c89c1e4b50c574e3a"), 
      "files_id": ObjectId("5113b0062be53b231f9dbc11"), 
      "n"  : 0, 
      "data" : BinData(0, "/9j/4AAQSkZJRgA...and...so...on../2Q==") 
     }; 

db.mediafiles.chunks.insert(chunk); 

Update

Я использую Метеор

Поэтому я могу использовать var ObjectId = Meteor.Collection.ObjectID;. Но как мне получить BinData?

ReferenceError: BinData is not defined

+0

Вы управляете этим из оболочки Монго? – notionquest

+0

Нет. JS-файл на стороне сервера – user3142695

+0

Чтобы быть ясным, прежде чем опубликовать свой ответ, используете ли вы NodeJS (серверная сторона JS)? – notionquest

ответ

0

Вот NodeJS код для вставки данных в коллекции. Чтобы ответить на ваш вопрос конкретно, вам нужен оператор ниже, если вы используете NodeJS.

var ObjectId = require('mongodb').ObjectID; 

Полный NodeJS код (если вы используете NodeJS): -

var Db = require('mongodb').Db, MongoClient = require('mongodb').MongoClient; 
var assert = require('assert'); 
var ObjectId = require('mongodb').ObjectID; 

var bindata = new require('mongodb').Binary("ZzEudm1s"); 

var insertDocument = function(db, callback) { 
    var chunk = { 
     "_id" : new ObjectId("535e1b88e421ad3a443742e7"), 
     "files_id" : new ObjectId("5113b0062be53b231f9dbc11"), 
     "n" : 0, 
     "data" : bindata 
    }; 

    db.collection('Day1').insertOne(chunk, function(err, result) { 
     assert.equal(err, null); 
     console.log("Inserted a document into the collection."); 
     callback(); 
    }); 
}; 

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { 
    assert.equal(null, err); 
    insertDocument(db, function() { 
     db.close(); 
    }); 
}); 

Если вам нужен чистый объект JavaScript в ObjectId, вы можете использовать ниже библиотеку.

https://www.npmjs.com/package/objectid-purejs

+1

Для ObjectID я нашел информацию, которую я могу использовать 'Meteor.Collection.ObjectID'. Но нет, я получаю 'ReferenceError: BinData не определен' – user3142695

+0

не кажется правильным ответом. получение ошибки '.Binary' не является функцией'. – adi

Смежные вопросы