如何访问Angular $ resource $ save()之后返回的值?

时间:2016-11-19 15:34:17

标签: php angularjs

我正在使用PHP CRUD Api来为简单的AngularJS列表应用程序提供服务。

当我向数据库添加新项目时,我想刷新列表以显示新项目。

我的想法是将数据推送到$ save success回调中的列表数组中。这很有效,但我需要知道这个问题。 PHP API编写的记录。

PHP Api会传回lastInsertId(),如此代码中所示

function create($table, $data) {
    $fields = $this->filter($table, $data);

    $sql = "INSERT INTO " . $table . " (" . implode($fields, ", ") . ") VALUES (:" . implode($fields, ", :") . ");";

    $bind = array();
    foreach($fields as $field)
        $bind[":$field"] = $data[$field];

    $result = $this->run($sql, $bind);
    return $this->db->lastInsertId();
}

$db = new db();
$rowId = $db->create($table,$data);
$requestContentType = $_SERVER['HTTP_ACCEPT'];
$this ->setHttpHeaders($requestContentType, $statusCode);
$response = $this->encodeJson($rowId);
echo $response;

问题是,我不知道如何使用下面的代码访问成功回调中的lastInsertId()

data.$save()
    .then(function (res) {
        // push the new data in to the list array here - how do I access the lastInsertId() that is returned from the Api?
    })
    .catch(function (req) {
        // error
    })
    .finally(function () {

    });

这是在插入新记录后刷新应用程序的最佳方式,还是我的方法错误?

1 个答案:

答案 0 :(得分:0)

以防万一有人在将来偶然发现这个问题,问题不在于$save函数,这是php CRUD Api的一个问题 - 它正在返回最后插入的ID,好吧,但不是采用JSON编码格式。

一旦我更改php Api以返回编码的ID JSON(例如{"id": "185"}),我就可以访问res.id