我需要将文档插入到集合中,该集合具有 ObjectId
和 BinData
值。因此我不知道如何插入它。
使用此代码,我收到错误TypeError:无法读取未定义的属性“ObjectId”
。
server/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);
<小时/>
更新
我正在使用Meteor
因此我可以使用var ObjectId = Meteor.Collection.ObjectID;
。但如何获取 BinData
?
ReferenceError:BinData 未定义
最佳答案
今天也偶然发现了这一点。
正如另一个答案提到的,您可以使用 MongoDB 驱动程序提供的 ObjectID
和 Binary
。我遇到的问题是插入后二进制数据不是我所期望的,这是由于 Binary
函数的内部工作原理造成的。它需要一个未编码的字符串或一个缓冲区,可以从 Base64 编码的内容初始化,如下所示:
const { Binary, ObjectID } = require('mongodb')
async function run() {
// Configure MongoDB connection
const client = new MongoClient()
// Connect to MongoDB
await client.connect(...)
try {
// Insert data using base64 encoded content and
// both ObjectID and Binary from mongodb package
await client.db().mediafiles.chunks.insert({
_id: ObjectID('57a9be3c89c1e4b50c574e3a'),
files_id: ObjectID('5113b0062be53b231f9dbc11'),
n: 0,
data: Binary(Buffer.from('/9j/4AAQSkZJRgA...and...so...on../2Q==', 'base64')),
})
} finally {
// Close client if it was opened
await client.close()
}
}
关于javascript - 如何将带有objectId的二进制数据添加到mongoDB中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38850650/