Сохранить данные в существующий экземпляр модели в петле - PullRequest
4 голосов
/ 02 июня 2019

У меня есть модель под названием ModelA, которая использует базовый класс Model, а не PersistedModel. ModelA содержит существующий экземпляр Model, который содержит следующий документ.

{
    "_id" : ObjectId("5cf34da5265db517d8e366d3"),
    "userId" : ObjectId("5cf34da5265db517d8e366d0"),
    "providers" : [ 
        "123456789", 
        "1598763690", 
        "1407850217", 
        "1720082597"
    ],
    "countByType" : {
        "doctors" : 3,
        "laboratories" : 0,
        "hospitals" : 0,
        "imagingCenters" : 0,
        "other" : 2
    }
}

Проблема, с которой я сейчас сталкиваюсь, заключается в том, как сохранить данные в существующий экземпляр модели.

 var modelInstance = new ModelA({userId: user.id, providers: ['111111111','222222222'], countByType: userProviderData.countByType});
           UserProvider.save({validate: false, throws: false },function(err, user) {
             if(err) {

               console.log('Errorsssssss ',err);
             } else {
               console.log(user);
             }
           });

Проверил приведенную ниже документацию, но при этом создается новый экземпляр вместо сохранения в существующей модели.

https://apidocs.strongloop.com/loopback/v/1.5.1/#model-save-options-callback

Любая помощь будет очень признательна.

1 Ответ

2 голосов
/ 02 июня 2019

Вы должны использовать что-то вроде updateAll:

ModelA.updateAll({_id: yourId}, data);

Или с помощью setId и затем сохранить:

var modelInstance = new ModelA(data);
modelInstance.setId(yourId);
modelInstance.save();

Причина, по которой в вашем примере он не обновил данные, заключалась в том, что в конструктор модели не был передан идентификатор, вы должны либо передать его, либо использовать setId.

...