Промежуточное ПО Mongoose .pre не назначает мою новую переменную - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь провести инвентаризацию для своей компании, прежде чем сохранить элемент, я хочу хэшировать элемент _id с помощью bcrypt (поэтому я никогда не выставляю сам идентификатор элемента), а затем преобразовать его в QR-код на base64 и сохранить в строку в базе данных.

Мне удалось все это сделать, но когда элемент сохраняется в базе данных, поле, которым я хочу манипулировать, не заполняется с помощью base64 png.

(Это первый раз, когда я спрашиваю что-то о StackOverflow, будут получены любые отзывы о самом формате вопроса. Просто запрограммируйте несколько месяцев.)

 ItemSchema.pre("save", function (next) {
    let item = this;
    let hashed_id = bcrypt.hashSync(String(item._id), saltRounds);
    QRCode.toDataURL(hashed_id, (err, url) => {
        png_stirng_image = String(url)
        item.qr_code = png_stirng_image
    })
    next();
    });

    const newItem = new Item({
        name: "Objeto uno", 
        brand: "Maquintosh", 
        category: "COMPUTADORA",
        date_bought: "2013-06-01",
        serial_number:"VADFFVWER", 
        current_owner: "USER ID",
        qr_code: ""
    });

    return newItem.save()
        .then(result =>{
            console.log("created")
            mongoose.connection.close()
        })
        .catch(error => {
            console.log(error);
            mongoose.connection.close()
            throw error;
 });    
...