Я хочу отправить 3 массива в Mongogodb Atlas, но у меня много проблем с этим, я надеюсь, вы мне поможете.
Это мой код:
модель: data.js:
'use strict'
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var dataSchema = Schema({
codDev: Number,
names: [String]
values: [String]
units: [String]
});
module.exports = mongoose.model('Data', dataSchema,'Data');
контроллер: project.js:
'use strict'
var newmodel = require('../models/data');
var controller = {
setData: function (req, res) {
var TestNMD = new newmodel();
TestNMD.codDispo = req.params.codDev;
TestNMD.nombres = req.params.names;
TestNMD.valores = req.params.values;
TestNMD.unidades = req.params.units;
if(req.params.codDev == null || req.params.names == null || req.params.values ==null || req.params.units ==null){
return res.status(400).send({
message: "Can't save."
});
}
TestNMD.save((ex, dataStored) => {
if (ex) return res.status(500).send({
message: "Error saving. " + ex
});
if (!dataStored) return res.status(400).send({
message: "Can't save"
});
return res.status(200).send({
data: dataStored
});
});
},
};
module.exports = controller;
маршруты: rout.js
'use strict'
var express = require('express');
var projectControler = require('../controllers/project.js');
var router = express.Router();
router.post('/setdata/:codDev?/:names?/:values?/:units?', projectControler.setData);
module.exports = router;
Вот как я тестирую API: http://localhost:3700/api/setdata/1/[a,a]/[2,2]/[c,c]
Прежде всего, когда я проверяю это на почтальоне, я получаю эту ошибку: "message": "ОшибкаMongoWriteConcernError: В настройках набора реплик не обнаружено режима беспокойства о записи с именем «Major /» "
Я обнаружил, что это происходит из-за моей строки подключения к mongodb Atlas, поэтому пришлось удалить это "test? retryWrites = true & w = большинство /" , чтобы заставить его работать. Но я не знаю, может ли это беспокоить другие вещи. Я хочу знать, возможно ли сделать так, чтобы это работало без удаления этой части строкового соединения.
Кроме того, причина появления запроса заключается в том, что когда он отправляет данные, он сохраняет их так:
{
"data": {
"names": [
"[a,a]"
],
"values": [
"[2,2]"
],
"units": [
"[c,c]"
],
"_id": "5d93b98a69f98728e03c3d2f",
"codDev": 1,
"__v": 0
}
}
И я хочу сохранить массив как массив, а не как строку.
Итак, я попробовал это:
var dataSchema = Schema({
codDev: Number,
names: [Array]
values: [Array]
units: [Array]
});
Но у меня есть это:
{
"data": {
"names": [
[
"[a,a]"
]
],
"values": [
[
"[2,2]"
]
],
"units": [
[
"[c,c]"
]
],
"_id": "5d93ba6592eb87376cdc1e7d",
"codDev": 1,
"__v": 0
}
}
И все, что я хочу, это получить что-то вроде этого:
{
"data": {
"names": [
[
"a",
"a"
]
],
"values": [
"2",
"2"
],
"units": [
[
"c",
"c"
]
],
"_id": "5d93ba6592eb87376cdc1e7d",
"codDev": 1,
}
}
Без "__v": 0 тоже.
Спасибо!