gpt4 book ai didi

javascript - 以 AngularJS 的方式向 MongoLab 添加一个新的模型字段

转载 作者:可可西里 更新时间:2023-11-01 09:13:46 24 4
gpt4 key购买 nike

我有一个名为 clientMongoDB 文档(在 MongoLab.com 上)这将用于跟踪健身比赛。每周都会进行“称重”并跟踪一些其他细节。

我遇到的问题是如何将子文档 添加到client使用 AngularJS 跟踪结果的文档。

我觉得这可能是我所缺少的明显和基本的东西,但我还没有想出如何将新字段附加到现有记录、数组或非数组。

以下是我认为相关的详细信息,但如果合适,请随时询问更多详细信息。

完整代码粘贴在 http://pastebin.com/4tyRiKus

示例客户端(我可以毫不费力地添加一个客户端)

{
"_id": {
"$oid": "50eee69fe4b0e4c1cf20d116"
},
"firstName": "Jon",
"lastName": "Doe"
}

现在从另一个模板中通过 _id 提取数据(/detail/:cliendId) 有效,但我希望为称重添加数据点。

<form ng-submit="addWeighIn()">
<input type="date" ng-model="date" required />
<input type="text" ng-model="weight" placeholder="Weight" smart-float required />
<input type="submit" class="btn btn-primary" value="Add" />
</form>

点击此处的添加按钮继续下一部分。

控制中的函数来处理(这会在 MongoLab 模块中触发并调用 update())

$scope.addWeighIn = function () {
console.log("addWeighIn: " + $scope.date + " : " + $scope.weight);
// the below line is obviously wrong, just out of ideas.
$scope.client.weights = [ { date: $scope.date, weight: $scope.weight } ];
$scope.client.update(function () {

});
};

控制台显示addWeighIn行,网络数据显示发送了请求,但实际上并没有文档中的重量,和上面一样。

MongoLab 资源 从 $scope.addWeighIn() 调用并触发

Client.prototype.update = function (cb) {
console.log("mongolab: update: " + cb);
return Client.update({ id: this._id.$oid },
angular.extend({}, this, { _id: undefined }), cb);
};

通过 update() 发送的数据(缺少新的称重数据)

{
"_id": {
"$oid": "50eee69fe4b0e4c1cf20d116"
},
"firstName": "Jon",
"lastName": "Doe"
}

这就是我在实际数据库中寻找的东西,但我需要添加权重并且相信我不理解一些基本的东西。

{
"_id": {
"$oid": "50eee69fe4b0e4c1cf20d116"
},
"firstName": "Jon",
"lastName": "Doe"
"weights": [
{ "date": "1/3/2013",
"weight": 155 }
{ "date": "1/10/2013",
"weight": 150 }
]
}

我有几个问题要做什么。

  1. 我可以在 HTML 代码中以声明方式执行此操作吗,例如设置 ng-modelclient.weights.date?例如:<input type="date" ng-model="client.weights.date" required /> (不起作用,但正在查看是否有类似的方法)
  2. 如果不是以声明方式,通过 AngularJS 执行此操作的正确方法是什么?
  3. 我应该使用什么样的术语来找到关于这个的东西?这似乎是我的主要挫败感,找不到例子。

我在 http://docs.mongodb.org/manual/applications/update/ 找到了 $push 描述并且可能是我需要使用的,但我不确定如何使用这种AngularJS 方式

最佳答案

我最终发现我的问题出在 MongoLab 资源上。

我用在 https://github.com/pkozlowski-opensource/angularjs-mongolab 上找到的实现交换了我的悲伤实现它奏效了。

由于找不到示例,这里是添加子文档的方法。

html

<form ng-submit="addWeighIn()">
<table class="table table-striped">
<thead>
<tr>
<th>Date</th>
<th>Weight</th>
<td></td>
</tr>
</thead>
<tbody>
<tr ng-repeat="weight in client.weighIn | orderBy:'date'">
<td>{{weight.date}}</td>
<td>{{weight.weight}}</td>
<td></td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<input type="text" ng-model="date" placeholder="Date of weigh-in" required />
</td>
<td class="input-append">
<input type="text" ng-model="weight" placeholder="Weight" smart-float required />
<span class="add-on">lbs</span>
</td>
<td><input type="submit" class="btn btn-primary" value="Add" /></td>
</tr>
</tfoot>
</table>
</form>

脚本

$scope.addWeighIn = function () {
console.log("addWeighIn: " + $scope.date + " : " + $scope.weight);
$weighIn = { date: $scope.date, weight: $scope.weight };
// push to the existing array if it exists
if ($scope.client.weighIn)
$scope.client.weighIn.push($weighIn);
// else create the field if it doesn't exist
else
$scope.client.weighIn = [ $weighIn ];

$scope.client.update(function () {
// do whatever after the update
});
};

关于javascript - 以 AngularJS 的方式向 MongoLab 添加一个新的模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com