Изменение одинаковых значений одной коллекции на желаемое значение с помощью мангусты в узле js - PullRequest
0 голосов
/ 20 мая 2018

У меня есть приложение в Nodejs, которое использует mongoose.У меня есть коллекция, которая в одном поле для каждых 15 записей сохраняет те же значения, но это значение является длинной строкой, которую я создал ранее.Теперь я хочу, чтобы каждые 15 фотографий меняли значения этих полей (длинная строка) на инкрементные числа с 1..n, например:

'qwerasdfzxcvqwerasdfzxcv' => '1',
'qwerasdfzxcvqwerasdfzxcv' => '1',
(13 more records)...
'qazwsxedcrfvtgbyhnuhnujm' => '2',
'qazwsxedcrfvtgbyhnuhnujm' => '2',
(13 more records)...

Результаты JSON из MongoDB:

[{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQwMDgzOTl9.2YvhnXtCD7-fm4B14k10m6NF7xuv7moCTbekVekkbvY","category":"Wasp","photo":"A_wasp_565","description":"","answer":"Bee","__v":0},{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQwMDgzOTl9.2YvhnXtCD7-fm4B14k10m6NF7xuv7moCTbekVekkbvY","category":"Wasp","photo":"A_Pompilid_wasp_007","description":"","answer":"Wasp","__v":0},{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQwMDgzOTl9.2YvhnXtCD7-fm4B14k10m6NF7xuv7moCTbekVekkbvY","category":"Wasp","photo":"wasp_248","description":"","answer":"Wasp","__v":0},...,{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQwMDgzOTl9.2YvhnXtCD7-fm4B14k10m6NF7xuv7moCTbekVekkbvY","category":"Wasp","photo":"A_wasp_555","description":"","answer":"Moth/Butterfly","__v":0},{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQxMTYzNzJ9.jTQ06D5nw_xuCP0q0GVzaMmi3XipeNsf_RX5tAzenh8","category":"Wasp","photo":"A_wasp_565","description":"","answer":"Wasp","__v":0},{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQxMTYzNzJ9.jTQ06D5nw_xuCP0q0GVzaMmi3XipeNsf_RX5tAzenh8","category":"Wasp","photo":"A_Pompilid_wasp_007","description":"","answer":"Wasp","__v":0},{"ID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjE5LCJpYXQiOjE1MjQxMTYzNzJ9.jTQ06D5nw_xuCP0q0GVzaMmi3XipeNsf_RX5tAzenh8","category":"Wasp","photo":"A_wasp_555","description":"","answer":"Wasp","__v":0}]}

Я хочуобновить выше до этого:

[{"ID":"1","category":"Wasp","photo":"A_wasp_565","description":"","answer":"Bee","__v":0},{"ID":"1","category":"Wasp","photo":"A_Pompilid_wasp_007","description":"","answer":"Wasp","__v":0},{"ID":"1","category":"Wasp","photo":"wasp_248","description":"","answer":"Wasp","__v":0},...,{"ID":"1","category":"Wasp","photo":"A_wasp_555","description":"","answer":"Moth/Butterfly","__v":0},{"ID":"2","category":"Wasp","photo":"A_wasp_565","description":"","answer":"Wasp","__v":0},{"ID":"2","category":"Wasp","photo":"A_Pompilid_wasp_007","description":"","answer":"Wasp","__v":0},{"ID":"2","category":"Wasp","photo":"A_wasp_555","description":"","answer":"Wasp","__v":0}]}

Таким образом, все эти 15 записей (которые уже имеют одинаковые значения, но длинные) будут иметь одинаковое число, но читаемое значение, а не эту длинную строку.

Мой вопрос заключается в том, как я могу сделать запрос для этого?(команды mongoose)

Это мой модельный модуль в узле (ID - это поле, которое я хочу изменить):

var Schema = mongoose.Schema;

var SurveyAnswersSchema = new Schema({
_id: {type: String},
ID: {type: String},
answer: { type: String},
description: {type: String},
category: { type: String, enum: ['Bee', 'Beetle', 'Fly', 'Moth/Butterfly', 'Wasp' ] },
});

module.exports = mongoose.model('surveyanswers', SurveyAnswersSchema);

Что я должен написать здесь?(модуль контроллера)

var SurveyResults = require('../models/surveyResults');

module.exports.reportAnswers = function (callback) {

     **// instead of this line what should I write?**
      SurveyResults.find({ID: 'this.ID'},{ID: number}, callback);
};

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 июня 2018

Я решил это.Это мой кодможет быть кому-то пригодится:

app.get('/surveyResultsUpdate', function(req, res, next){

    surveyResults.surveyResultsUpdate(function(err, answers){
        if (err)
        return next(err);

    var num =0;
    var resultsIdSet = new Set();
    answers.forEach(function(answer) {
         resultsIdSet.add(answer.Id);        
    });

    var newResults = answers; 

    var user_answer_dict = new Map();

    var counter = 0;
    for (var Id of resultsIdSet){
        num += 1;
        for ( var j in newResults) {
                if (Id === newResults[j].Id){
                    counter+=1;
                    user_answer_dict.set(counter, newResults[j]);

                    newResults[j]._id = answers[j]._id;
                    newResults[j].Id = num;
                    newResults[j].answer = answers[j].answer;
                    newResults[j].photo = answers[j].photo;
                    newResults[j].description = answers[j].description;
                    newResults[j].category = answers[j].category;
                }
            }
        }
        res.json(newResults);
    });
});

Результаты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...