小编guy*_*g28的帖子

Node.js/MongoDB/Mongoose:缓冲区比较

首先,一点背景:

我正在尝试检查图像的二进制数据是否已经保存在Mongo中.给定以下架构:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

var imageSchema = new Schema({
    mime:  String,
    bin: { type: Buffer, index: { unique: true }},
    uses : [{type: Schema.Types.ObjectId}]
});

module.exports = mongoose.model('Image', imageSchema);
Run Code Online (Sandbox Code Playgroud)

...我想查询是否存在图像,是否添加了我的对象正在使用它的引用,然后更新它.如果没有,我想创建(upsert)它.

鉴于它不存在的情况,下面的代码完美地工作.如果是,则以下代码不会,并将另一个Image文档添加到Mongo.我觉得它可能是Mongo Buffer类型与节点缓冲区的比较问题,但我无法弄清楚如何正确地比较它们.请让我知道如何更新以下内容!谢谢!

Image.findOneAndUpdate({
    mime : contentType,
    bin : image
}, {
    $pushAll : {
        uses : [ myObject._id ]
    }
}, {
    upsert : true
}, function(err, image) {
    if (err)
        console.log(err);
    // !!!image is created always, never updated!!!
});
Run Code Online (Sandbox Code Playgroud)

javascript buffer mongoose mongodb node.js

4
推荐指数
1
解决办法
5924
查看次数

标签 统计

buffer ×1

javascript ×1

mongodb ×1

mongoose ×1

node.js ×1