cron, nodejs, mon goose вставка данных с помощью cronjob в указанном формате c - PullRequest
0 голосов
/ 03 марта 2020

ниже - результат обратного вызова mon goose моего запроса mon go, я только упомяну два примера результатов

result [
  {
        "_id" : ObjectId("5e5a0be699e0e4449829c444"),
        "mappedAdmins" : ObjectId("5e5906dfc749dc4498033f7e"),
        "userId":ObjectId("5e5a0be699e0e4449829c444"),
        "city" : "City1",
        "prints" : {
                "copyCount" : 40,
                "printCode" : "KL001"
        },
        "printDetails" : [
                {
                        "abbreviation" : "pn1",
                        "printName" : "Print Name 1",
                        "printCode" : "PD001"
                },
                {
                        "abbreviation" : "pn2",
                        "printName" : "Print Name 2",
                        "printCode" : "KL001"
                },
                {
                        "abbreviation" : "pw1",
                        "printName" : "Print wealth",
                        "printCode" : "E001"
                },

        ],
        "orders" : [
                {
                        "_id" : ObjectId("5e3a714af2657521e8c5668d"),
                        "approved" : false,
                        "orderCreatedforDate" : ISODate("2020-02-26T18:30:00Z"),
                        "order" : [
                                {
                                        "_id" : ObjectId("5e3a714af2657521e8c5668f"),
                                        "abbreviation" : "pn2",
                                        "printName" : "Print Name 2",
                                        "printCode" : "KL001",
                                        "copyCount" : 11,
                                        "tradeCopies" : 133
                                },
                                {
                                        "_id" : ObjectId("5e3a714af2657521e8c5668e"),
                                        "abbreviation" : "pn1",
                                        "printName" : "Print Name 1",
                                        "printCode" : "PD001",
                                        "copyCount" : 17,
                                        "tradeCopies" : 117
                                }
                        ],
                        "frequency" : "TU"
                }
        ]
}
{
        "_id" : ObjectId("5e5d236f99e0e4449829c44e"),
        "mappedAdmins" : ObjectId("5e5d237fc749dc4498033f87"),
        "city" : "City1",
        "prints" : {
                "copyCount" : 100,
                "printCode" : "KL001"
        },
        "printDetails" : [
                {
                        "abbreviation" : "et",
                        "printName" : "Print Name 1",
                        "printCode" : "PD001"
                },
                {
                        "abbreviation" : "pn2",
                        "printName" : "Print Name 2",
                        "printCode" : "KL001"
                },
                {
                        "abbreviation" : "pw1",
                        "printName" : "Print wealth",
                        "printCode" : "E001"
                },
               ],
        "orders" : [ ]

это мой обратный вызов mon goose после моего mon go запрос заканчивается:

const orderCron = new CronJob('* * * * *', function () {
    console.log('orders cron for create orders');
    InsertOrdersdata();
}, null, false, 'Asia/Calcutta');

orderCron.start();

async function InsertOrdersdata() {

    console.log('InsertOrdersdata');
///// mongoquery starts....////
    ////....mongo query ends here,before this callback function //// 
     ], async function (res, result) {
        console.log('result', result)
        try {
            let newarry = [];
            Object.keys(result).forEach(key => {


                if (result[key].orders.length > 0) {
                    console.log('length', result[key].orders.length);

                    let newrecord = {};
                    let val = result[key].printorders
                    console.log('val', val)
                    newrecord = result[key].orders[0];
                    newrecord._id = null;
                    newrecord['orderCreatedforDate'] = tomorrowDate;
                    newarry.push(newrecord);
                }
            })

            const cronOrders = await Order.insertMany(newarry)
            console.log('cronOrders', cronOrders)
            return res.status(200).json({
                cronOrders
            })

Я не могу сделать это ЗАЯВЛЕНИЕ НА ПРОБЛЕМУ должным образом. ** 1: ** мне нужно проверить, было ли изменено copyCount для этого printCode из "print" : {"copyCount" : 100,"printCode" : "KL001"}, затем обновите copyCount в порядке покоя printDetails, который будет точно таким же, он будет выглядеть так:

 {
            "_id" : ObjectId("new ObjectId would be generated"),
            "approved" : false,
            "orderCreatedforDate" : ISODate("2020-03-04T18:30:00Z"),//D+1 i already have a global function for D+1 date with name tomorrowDate
            "printOrder" : [
                    {       "_id" : ObjectId("new ObjectId would be generated"),
                            "abbreviation" : "pn2",
                            "printName" : "Print Name 2",
                            "printCode" : "KL001",
                            "copyCount" : 100,  ///Count updated
                            "tradeCopies" : 156
                    },
                    {       "_id" : ObjectId("new ObjectId would be generated"),
                            "abbreviation" : "pn1",
                            "printName" : "Print Name 1",
                            "printCode" : "PD001",
                            "copyCount" : 19,///Count same
                            "tradeCopies" : 192
                    }
            ],
            "frequency" : "TU",
            "userId" : ObjectId("5e5a0be699e0e4449829c444"), /// this is _id from result 
            "mappedAdmins" : ObjectId("5e5906dfc749dc4498033f7e"),/// this is mappedAdmins from result 
          }

2: если порядок равен нулю, то есть orders:[], тогда мне нужно извлечь _id,mappedAdmins из результата & abbreviation,printName,printCode из printDetails, и мне нужно поставить значение по умолчанию "0" для tradeCopies и copyCount и частота за неделю, т. е. завтра будет «МЫ», это будет выглядеть так:

{
            "_id" : ObjectId("new ObjectId would be generated"),
            "approved" : false,
            "orderCreatedforDate" : ISODate("2020-03-04T18:30:00Z"),
            "order" : [
                    {       "_id" : ObjectId("new ObjectId would be generated"),
                            "abbreviation" : "pn2",
                            "printName" : "Print Name 2",
                            "printCode" : "KL001",
                            "copyCount" : 0 ///zero count
                            "tradeCopies" : 0        ///zero count
                    },
                    {       "_id" : ObjectId("new ObjectId would be generated"),
                            "abbreviation" : "pn1",
                            "printName" : "Print Name 1",
                            "printCode" : "PD001",
                            "copyCount" : 0 ///zero count
                            "tradeCopies" : 0       ///zero count
                    },
                    {       "_id" : ObjectId("new ObjectId would be generated"),
                            "abbreviation" : "pw1",
                            "printName" : "Print Name 2 wealth",
                            "printCode" : "E001",
                            "copyCount" : 0 ///zero count
                            "tradeCopies" : 0       ///zero count
                    }
            ],
            "frequency" : "WE",
            "userId" : ObjectId("5e5a0be699e0e4449829c444"),/// this is _id from result 
            "mappedAdmins" : ObjectId("5e5906dfc749dc4498033f7e"),/// this is mappedAdmins from result
           }

обязательно посмотрите комментарии в коде. Поля, которые мне нужно добавить, утверждены: ложь , userId который является _id, dealerId который является mappedAdmins . 1: я не могу сгенерировать новый заказ, если заказ равен нулю, то есть orders: [], 2: я не могу обновить copyCount для заказа.

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