如何推送嵌入式阵列?

时间:2014-10-21 16:43:30

标签: javascript arrays angularjs mongoose

我喜欢不同类型的商店(杂货店,餐馆,健身房等)。它们对于数组中的对象是唯一的。例如,健身房将有不同于杂货店的部分。

var UserSchema = new Schema({
  store: [
      {
        name: String,
        section: Array,
      }
  ],
});

我使用的只是store:Array(在UserSchema中),但我将存储更改为数组内的对象。如何推送商店内的对象?

$scope.storeUpdate = function(){
        Users.get({email:$scope.global.user.email}, function(user3) {
            // Changing store.push to store.name.push gives the error: user3 not defined
            // If in UserSchema the store: type: Array, then user3[0].store.push works fine
            user3[0].store.section.push($scope.datStore.name);
            user3[0].$update(function(response) {
                // This just updates user changes on the webpage
                Users.query({}, function(users) {
                    $scope.users = users;
                    $scope.global.user = response;
                });
            });
        });
    };

编辑:我应该只嵌入第二个架构吗?

1 个答案:

答案 0 :(得分:0)

user3[0].store.name.push($scope.datStore.name);

你正在推进store.name这是一个字符串对象(不是一个数组)

如果要推送到store.name

,可以更改架构
var UserSchema = new Schema({
  store: [
      {
        name: Array,
        section: Array,
      }
  ],
});

然后您就可以进入user3 [0] .store.name

修改

你有Schema,因为那里有一个具有属性存储的对象,其中store是一个包含对象的数组,这些对象将具有属性name和section ..所以只需将对象推送到商店。

只需确定架构应该是什么,您的目标是将数据推送到商店吗?

所以你必须在推送之前建立对象。例如

var obj ={ 
   name: $scope.datStore.name, 
   section: ["grocery","utensils"]
}

然后将您的对象推入商店数组。

user3[0].store.push(obj);

简而言之,在将其推入商店数组

之前,创建要推入商店的对象

你可以将数据推送到这样的部分(在将对象推入商店之前

var obj ={ 
    name: $scope.datStore.name, 
    section: []
}

obj.section.push(someSource1.section); //grocery
obj.section.push(someSource2.section); //utensils

然后进入商店

user3[0].store.push(obj); // here object being pushed will be {name:"",section:["grocery","utensils"]