Вставка данных mongodb с использованием схемы mongoose / создание схемы mongoose с вложенными документами - PullRequest
0 голосов
/ 12 марта 2019

Я довольно новичок во всей этой среде и уже некоторое время ищу.Ниже приведена моя модель схемы Mongoose, я пытаюсь выполнить вставку рабочего процесса, используя эту схему в коллекции Workflows, я изначально разбил каждый вложенный объект в схеме, а затем соединил их все в один для «WorkflowInsert».IDK, если один из них отформатирован правильно или какой метод я должен использовать для вставки объекта.Я чувствую, что что-то упустил между файлом модели и моей вставкой.

workflow.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;

const DstComponents = new Schema({
    ID: String,
    updated: { type: Date, default: Date.now }
});

const Transport = new Schema({
    ID: String,
    Type: String,
    Method: Boolean,
    Location: String,
    Name: String,
    Desc: String,
    SrcComponent: String,
    DstComponents: [DstComponents]
});


const IPort = new Schema({
    Type: String,
    Name: String,
    TransportID: String,
});

const OPort = new Schema({
    ID: String,
    Type: String,
    Name: String,
    Transport: [Transport]
});

const InputPorts = new Schema({
    Ports: [IPort]
});

const OutputPorts = new Schema({
    Ports: [OPort]
});

const Properties = new Schema({
    Ports: [{
        Name: String,
        Desc: String,
        Value: String,
    }]
});

const Component = new Schema({
    id: { type: String, required: true, unique: true },
    Type: String,
    Name: String,
    Desc: String,
    WorkflowID: ObjectId,
    Updated: { type: Date, default: Date.now },
    Properties: [Properties],
    InputPorts: [InputPorts],
    OutputPorts: [InputPorts]
});

const Workflow = new Schema({
    workflowid: ObjectId,
    id: String,
    LocalCachePath: String,
    SharedCachePath: String,
    Name: String,
    Desc: String,
    Components: [Component]
});

const WorkflowInsert = new Schema({
    workflowid: ObjectId,
    id: String,
    LocalCachePath: String,
    SharedCachePath: String,
    Name: String,
    Desc: String,
    Components: [{
        id: { type: String, required: true, unique: true },
        Type: String,
        Name: String,
        Desc: String,
        WorkflowID: ObjectId,
        Updated: { type: Date, default: Date.now },
        Properties: [{
            Name: String,
            Desc: String,
            Value: String,
        }],
        InputPorts: [{
            Ports: [{
                Type: String,
                Name: String,
                TransportID: String,
            }]
        }],
        OutputPorts: [{
            Ports: [{
                ID: String,
                Type: String,
                Name: String,
                Transport: [{
                    ID: String,
                    Type: String,
                    Method: Boolean,
                    Location: String,
                    Name: String,
                    Desc: String,
                    SrcComponent: String,
                    DstComponents: [{
                        ID: String,
                        updated: { type: Date, default: Date.now }
                    }]
                }]

            }]
        }]
    }]
});

module.exports = mongoose.model('Workflow', WorkflowInsert)
module.exports = {
    Workflow: Workflow,
    Component: Component,
    Properties: Properties,
    InputPorts: InputPorts,
    OutputPorts: OutputPorts,
    Transport: Transport,
    IPort: IPort,
    OPort: OPort,
    DstComponents: DstComponents
};

Код ниже - моя вставка, я пробовал несколько способов вставки в БД, но ничего не помогло, я продолжаю получать "ДБ нет«Я почти уверен, что он сообщает мои мои данные или моя схема повреждена и не может быть вставлена.Есть ли способ получить лучшую отчетность об ошибках.

api.js

router.get('/insertworkflow', (req, res) => {

    //const Profile = require('../models/Profile')
    const Workflow = require('../models/Workflow.js')
    const fs = require('fs');
    const path = require('path');
    const directoryPath = path.join(__dirname, '/');

    fs.readFile(directoryPath + '/workflowexampledata.json', 'utf8', function(err, data) {
        if (err) throw err;
        console.log(data);
        var json = JSON.parse(data);
        var data = { texto: json };
        db.collection("workflows").insert(data, function(err, res) {
            if (err) throw err;
        });
    });
});

определение DB

///Connecting to MOngoDb
MongoClient.connect(url, { useNewUrlParser: true }, function(err, database){
    if (err) throw err;
    var db = database;
    console.log('connected to db mai');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...