2016-07-13 2 views
-2

У меня этот код;Извлечение auto incremented id

$scope.hold = {}; 

$scope.save = function(){ 
    var data = { 
     parent_id: $scope.hold.id, //-->This is an auto generated id. 
     name: $scope.hold.some_name, 
     address: $scope.hold.address, 
     dependent = { 
        parent_id: $scope.hold.id, //--> This is equal to the id above. 
        child_name: $scope.hold.child_name, 
        child_age: $scope.hold.child_age 
     } 
    } 
myService.saveData(data, function(){ 
}) 
} 

Теперь я не могу получить автоинкрементный id, я тоже не могу его зарегистрировать. Он возвращает undefined. Откуда я совершил ошибку? Как я могу получить свой автоматически увеличиваемый id? Это для того, чтобы выполнить мой запрос в моем api.

dependent внутри var data должен быть сохранен в другой модели, у которой есть внешний ключ id.

Как я могу в состоянии извлечь мой автомобиль увеличивается id (родительской таблицы), так что я могу инициализировать его id (зависимую таблицу) моего ребенка, чтобы выполнить один HTTP POST метод.

TABLE DESIGN (образец)

**Parent Table** parent_id | name | address 1 | john | place

**Dependent Table** dependent_id | parent_id | name | age 2 | 1 | james| 7

+0

Является ли '$ scope.hold.id' всегда определяется? Я не вижу нигде в коде, где вы даете ему значение, поэтому имеет смысл, что он «неопределен». –

+0

Я действительно не понимаю, что вы пытаетесь сделать. '$ scope.hold' в вашем случае - пустой объект. Таким образом, 'data.id' является' undefined', потому что '$ scope.hold.id' тоже' undefined'. И если вы хотите, чтобы данные были объектами, вам нужно написать так: 'var data = {id: something, name: other_value ...}' –

+0

Извините, '$ scope.hold' является тем, который я использовал при привязке к мой html. –

ответ

3

проблема с вашим кодом является объектом JSON вашего создаём.

она должна быть ниже

var data = { 
    id : $scope.hold.id, //-->This is an auto generated id. 
    name : $scope.hold.some_name, 
    address : $scope.hold.address, 
    dependent : { 
       id:$scope.hold.id, //--> This is equal to the id above. 
       child_name:$scope.hold.child_name, 
       child_age:$scope.hold.child_age 
    } 
} 

сниппета.

var app = angular.module('app', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    
 
$scope.hold = {}; 
 
    
 
$scope.hold.id = Math.floor((Math.random() * 10) + 1); 
 

 
$scope.save = function(){ 
 
    var data = { 
 
     id : $scope.hold.id, //-->This is an auto generated id. 
 
     name : $scope.hold.some_name, 
 
     address : $scope.hold.address, 
 
     dependent : { 
 
        id:$scope.hold.id, //--> This is equal to the id above. 
 
        child_name:$scope.hold.child_name, 
 
        child_age:$scope.hold.child_age 
 
     } 
 
    } 
 
    
 
alert(data.dependent.id);  
 
    
 
} 
 

 
});

 

 
<html ng-app="app"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script> 
 
    <script src="app.js"></script> 
 
    </head> 
 

 
    <body ng-controller="MainCtrl"> 
 
    <p>dynamic ID {{hold.id}}</p> 
 
    <a ng-click="save()"> click here to save</a> 
 
    </body> 
 

 
</html>

+0

Что я имею ввиду в автогенерации в своей базе данных, сэр. Как автоматические приращенные данные –

+0

Мне очень жаль, что смущаемся, сэр. –

+0

Для этого вам нужно сначала сохранить объект данных с помощью HTTP-сообщения, в ответ вы должны вернуть автоматически увеличивающийся идентификатор, в обратном вызове успеха назначьте этот идентификатор зависимому объекту, а затем сохраните его с помощью HTTP-сообщения. – Deep

0

Как насчет другого пути?

function Man(name, age) 
 
{ 
 
    this._id = Math.round(Math.random() * 8999 + 1000); 
 
    this._name = name || null; 
 
    this._age = age || 0; 
 
    this._address = null; 
 
    this._dependent = null; 
 
} 
 

 
Man.prototype.getId = function() 
 
{ 
 
    return this._id; 
 
} 
 

 
Man.prototype.getName = function() 
 
{ 
 
    return this._name; 
 
} 
 

 
Man.prototype.setName = function(name) 
 
{ 
 
    this._name = name; 
 
    return this; 
 
} 
 

 
Man.prototype.getAge = function() 
 
{ 
 
    return this._age; 
 
} 
 

 
Man.prototype.setAge = function(age) 
 
{ 
 
    this._age = age; 
 
    return this; 
 
} 
 

 
Man.prototype.getAddress = function() 
 
{ 
 
    return this._address; 
 
} 
 

 
Man.prototype.setAddress = function(address) 
 
{ 
 
    this._address = address; 
 
    return this; 
 
} 
 

 
Man.prototype.getDependent = function() 
 
{ 
 
    return this._dependent; 
 
} 
 

 
Man.prototype.isDependent = function() 
 
{ 
 
    return this._dependent ? true : false; 
 
} 
 

 
Man.prototype.setDependent = function(dependent) 
 
{ 
 
    this._dependent = dependent; 
 
    return this; 
 
} 
 

 
Man.prototype.logInfo = function() 
 
{ 
 
    console.log('id: ' + this._id); 
 
    console.log('name: ' + this._name); 
 
    console.log('age: ' + (this.age > 0 ? this.age : '-')); 
 
    console.log('address: ' + (this._address ? this._address : '-')); 
 
    console.log('dependent: ' + (this._dependent ? this._dependent.getId() : 'no')); 
 
} 
 

 

 

 
var Jane = new Man('Jane', 41); 
 
Jane.setAddress('NY, Miracle str., 5'); 
 
var Max = new Man('Max', 20); 
 
Max.setAddress(Jane.getAddress()).setDependent(Jane); 
 
Jane.logInfo(); 
 
Max.logInfo();

+0

Это отличный способ, сэр. Однако это может не соответствовать тому, что я спросил выше. Мне очень жаль, наверное, я поставил свой вопрос выше, чем-то запутанный. –

Смежные вопросы