2017-10-02 1 views
1

Ich versuche Realm mobile platform zu verwenden, wo ich externen Web-Service von Realm-Objekt-Server aufrufen und Objekte verschiedener Entitäten erstellen.Eigenschaft des Typs 'Array' hat unbekannten Objekttyp in Realm-Objekt-Server

nach Schema erstellt, wenn ich Daten am Dumping in es ich erhalte folgenden Fehler

Schema validation failed due to the following errors: 
- Property 'Response.customersList' of type 'array' has unknown object type 'Customer' 

hier ist mein Code

'use strict'; 

    var express = require('express'); 
    var request = require('request'); 
    var rp = require('request-promise'); 
    var Realm = require('realm'); 
    var app = express(); 

    class Customer {} 
    let CustomerSchema ={ 

    name: 'Customer', 
    primaryKey: 'mCustomerId', 
     properties: { 
     errorMessage: {type: 'string', optional: true}, 
     status:{type: 'string', optional: true}, 
     address: {type: 'string', optional: true}, 
     customerNumber: {type: 'string', optional: true}, 
     city: {type: 'string', optional: true}, 
     contactId: {type: 'double', optional: true}, 
     country: {type: 'string', optional: true}, 
     customerId:{type: 'double', optional: true}, 
     customerRecordType: {type: 'string', optional: true}, 
     currency: {type: 'string', optional: true}, 
     email: {type: 'string', optional: true}, 
     custGroup: {type: 'string', optional: true}, 
     invoiceAndDeliveryOnHold: {type: 'string', optional: true}, 
     estimate: {type: 'string', optional: true}, 
     fax: {type: 'string', optional: true}, 
     firstName:{type: 'string', optional: true}, 
     lastName: {type: 'string', optional: true}, 
     mCustomerId: {type: 'string', default: CreateGuid()}, 
     notes: {type: 'string', optional: true},  
     organizationName: {type: 'string', optional: true}, 
     phoneNumber: {type: 'string', optional: true}, 
     department: {type: 'string', optional: true}, 
     parentCompanyId: {type: 'double', optional: true}, 
     parentCompanyName: {type: 'string', optional: true}, 
     state: {type: 'string', optional: true}, 
     totalInvoiced: {type: 'double', optional: true},  
     zipcode: {type: 'string', optional: true}, 
     customerStatus: {type: 'string', optional: true}, 
     siteId: {type: 'string', optional: true}, 
     wareHouseId:{type: 'string', optional: true} 
     } 
    }; 

    let ResponseSchema = { 
     name: 'Response', 
     properties: { 
     errorMessage: 'string', 
     status: 'string', 
     customersList: {type: 'list',objectType:'Customer'} 
     } 
    }; 


    app.get('/getMasterData', (req, res) => { 

    console.log("Web service called"); 

    const options = { 
     method: 'POST', 
     uri: 'url', 
     body: { 
     userName: '4500858', 
     password: 'password', 
     companyId: 'UST1', 
     page: 1, 
     }, 
     headers: { 
     'content-type': 'application/json' 
     }, 
     json: true 

    }; 

    rp(options) 
     .then(function (response) { 


     try{ 

      var customerList = response.customersList; 
      var responseRealm = new Realm({   
       schema: [ResponseSchema] 
      }); 

      // error comes in following block 
      responseRealm.write(() => { 

        console.log("inserting"); 
        responseRealm.create('Response',response, true); 
      });  
     }catch(e){ 

       console.log("Error 1"+e.message); 

     } 


     }) 
     .catch(function (err) { 

     console.log("Error 2"+JSON.stringify(err)); 

     }); 


    }); 

    function initializeSchema(){ 

     Realm.open({schema: [CustomerSchema, ResponseSchema], 
        schemaVersion: 1, 
        migration: (oldRealm, newRealm) => { 

         console.log("oldRealm "+oldRealm); 
          if (oldRealm.schemaVersion < 1) { 


          } 
        } 
      }).then(realm => { 
      console.log("Schema open"); 

      let customers = realm.objects('Customer'); 
      console.log(customers.length); 

      for(let i=0;i<customers.length;i++){ 

       console.log(customers[i].firstName); 
      } 

     }); 

    } 

    function CreateGuid() { 

     function _p8(s) { 
      var p = (Math.random().toString(16)+"000000000").substr(2,8); 
      return s ? "-" + p.substr(0,4) + "-" + p.substr(4,4) : p ; 
     } 
     return _p8() + _p8(true) + _p8(true) + _p8(); 
    } 

    initializeSchema(); 

    app.listen(3000, function() { 
     console.log("Go!"); 
    }); 
+0

Das ist nicht 'Java'-Code. Bitte korrigieren Sie Ihre Tags. –

Antwort

1

Das Problem ist, mit:

var responseRealm = new Realm({ 
    schema: [ResponseSchema] 
}); 

Response Links zu Customer, also CustomerSchema müssen enthalten sein das Schema-Array, wenn ResponseSchema vorhanden ist.

Verwandte Themen