Сценарий MongoDb ReferenceError - PullRequest
0 голосов
/ 10 июля 2019

Я собрал следующий скрипт MongoDB для организации своей коллекции purchaseorders:

db.purchaseorders.find({}).snapshot().forEach(function(purchaseOrder)
{    
    let items = [];
    purchaseOrder.items.map(item => {

        let dataItem = {};
        dataItem.state = item.state;
        dataItem.requestedQuantity = item.requestedQuantity;
        dataItem.startDateTime = purchaseOrder.creationDateTime;

        items.push(dataItem);

        printjson(dataItem);
    });


    let data = {};
    data.code = purchaseOrder.code;
    data.state = purchaseOrder.state;
    data.items = items;

    printjson(data)


    db.purchaseorders.update({
        _id: purchaseOrder._id
    },
    {
        $set: data
    });
});

При попытке запустить я получаю следующую ошибку:

MongoDB shell version v3.6.4
connecting to: mongodb://127.0.0.1:27017/testdb
MongoDB server version: 3.6.4
Server has startup warnings:
2019-07-10T06:58:42.825-0300 I CONTROL  [initandlisten]
2019-07-10T06:58:42.826-0300 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-07-10T06:58:42.826-0300 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-07-10T06:58:42.826-0300 I CONTROL  [initandlisten]
>
> db.purchaseorders.find({}).snapshot().forEach(function(purchaseOrder)
... {
...     let items = [];
...     purchaseOrder.items.map(item => {
...
...         let dataItem = {};
...         dataItem.state = item.state;
...         dataItem.requestedQuantity = item.requestedQuantity;
...         dataItem.startDateTime = purchaseOrder.creationDateTime;
...
...         items.push(dataItem);
...
...         printjson(dataItem);
...     });
...
...
>     let data = {};
>     data.code = purchaseOrder.code;
2019-07-10T17:44:09.664-0300 E QUERY    [thread1] ReferenceError: purchaseOrder is not defined :
@(shell):1:1
>     data.state = purchaseOrder.state;
2019-07-10T17:44:09.664-0300 E QUERY    [thread1] ReferenceError: purchaseOrder is not defined :
@(shell):1:1
>     data.items = items;
2019-07-10T17:44:09.665-0300 E QUERY    [thread1] ReferenceError: items is not defined :
@(shell):1:1
>
>     printjson(data)
{ }
>
>
>     db.purchaseorders.update({
...         _id: purchaseOrder._id
...     },
...     {
...         $set: data
...     });
2019-07-10T17:44:09.668-0300 E QUERY    [thread1] ReferenceError: purchaseOrder is not defined :
@(shell):2:9
> });
2019-07-10T17:44:09.668-0300 E QUERY    [thread1] SyntaxError: expected expression, got '}' @(shell):1:0
>

Не могу понять, почему я получаю эти ReferenceError с.Помощь оценена.

1 Ответ

0 голосов
/ 11 июля 2019

Когда вы печатаете (или копируете) две пустые строки подряд, оболочка отменяет ввод и возвращается к приглашению. Вы можете видеть, где приглашение меняется с ... обратно на >.

Удалите двойные пустые строки перед строками let data = {}; и db.purchaseorders.update и повторите попытку.

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