2016-10-01 23 views
0

Ich bin ein Anfänger im Codieren im Moment, also bitte haben Sie Geduld, wenn das Material nicht klar genug ist, werde ich mein Bestes geben.Definieren eines Mungo-Schema-Arrays von Objekten mit ng-Modell

Hier ist das Problem

{ 
    email: 'asdf', 
    password: 'asdf', 
    userlists: { 
     list1: [ [Object], [Object], [Object] ] 
    } 
} 

ich das Terminal will das Array von Objekten als Strings senden Sie mich zurück.

Im Versuch, dieses Schema zu verwenden,

user.js

var mongoose = require('mongoose'); 
module.exports = mongoose.model('User', { 
    email: String, 
    password: String, 
    userlists: { 
     list1: {type:{ sublist1: String }}, 
     list2: {type:{ sublist2: String }} 
    } 
}); 

Ich habe versucht, die userlists zu einem Array von Objekten zu setzen, gibt diese das gleiche unerwünschte Ergebnis, wie auch als leere Arrays der list1 und list2 wenn sie nicht gefüllt sind.

möchte ich den Benutzer meine folgende $http.post Methode zusammen mit ng-model zu verwenden, und ich benutze ngTagsInput Direktive, um den Benutzer die Auswahl von vorgefertigten "Tags" bei der Anmeldung zu ermöglichen.

Anmelde-controller.js

$scope.createUser = function(){ 
    console.log($scope.newUser); 
    $http.post('api/user/signup', $scope.newUser) 
    .success(function(response){ 

    }) 
    .error(function(error){ 
     console.log(error); 
    }) 
}; 

signup.html

<button ng-click="createUser()">Submit</button> 

    <hr> 
     <div> 
     <tags-input ng-model="newUser.userlists.list1" display-property="sublist1"> 
      <auto-complete  source="tagsLoadedFromNgTagsInput($query)" 
          min-length="1" 
          load-on-focus="true"  
          load-on-empty="true"> 
      </auto-complete> 
     </tags-input> 
     </div> 

Hier ist das Ergebnis, das ich aus dem Server-Terminal bekommen, wenn sie ausgeführt. Ich möchte die Objekte innerhalb des Arrays als Zeichenfolgen angezeigt werden, die durch die Eingabe in signup.html oben festgelegt werden.

{ 
    email: 'asdf', 
    password: 'asdf', 
    userlists: { 
     list1: [ [Object], [Object], [Object] ] 
    } 
} 

Hier ist das Ergebnis, wenn db.users.find().pretty() im Mongo Mantel Anmeldung:

{ 
    "_id" : ObjectId("57efd2dbdcb311107b4830b2"), 
    "email" : "asdf", 
    "password" : "asdf", 
    "userlists" : { 
     "list1" : [ 
      { 
       "sublist1" : "sometag1", 
       "_id" : "57ed472b0c868aafab696b61" 
      }, 
      { 
       "sublist1" : "sometag2", 
       "_id" : "57ed472b0c868aafab696b62" 
      }, 
      { 
       "sublist1" : "sometag3", 
       "_id" : "57ed472b0c868aafab696b63" 
      } 
     ] 
    }, 
    "__v" : 0 
} 

Weiß jemand, was ich falsch hier tue?

Antwort

1

Die console.log Funktion wickelt die Objekte, bevor sie angezeigt werden. Um sicherzustellen, dass alle Daten angezeigt werden, müssen Sie sie vor dem Aufruf der Konsole mithilfe von JSON.stringify in eine Zeichenfolge konvertieren.

// Your object 
 
var obj = {some: {nested: {object: {definition: 'hello world!'}}}}; 
 

 
// Print as a single line 
 
console.log(JSON.stringify(obj)); 
 

 
// Print with 2 spaces identation 
 
console.log(JSON.stringify(obj, null, 2));

+0

Vielen Dank! Funktioniert wie ein Charme und macht total Sinn :) – Dennis

0

Verwenden Sie ng-repeat, da list1 ein Array ist.

<tags-input ng-repeat="list in newUser.userlists.list1"> 
       <div>{{list.sublist1}}</div> 
</tags-input> 
+0

Ich bin nicht sicher, ob ich verstehe die Antwort, aber im nicht Probleme, meine Tags im Frontend Laden im Probleme mit der korrekten Ausgabe in der serverseitigen Konsole bekommen. Danke für die Antwort, ich schätze es! – Dennis

+0

Verwenden Sie 'console.log (Object.userlists.l1)' –

Verwandte Themen