Error: [ngRepeat:dupes] Using MEAN w/ Heroku
Error: [ngRepeat:dupes] Using MEAN w/ Heroku
我只是从数据库中获取数据并使用 ngRepeat 将其显示在 html 文件中。连接到数据库成功,我可以向其中添加数据。此外,客户端的所有内容都可以正常工作,因为我能够使用定义的数组在 ngRepeat div 中显示数据。所以问题一定出在 .get() 方法的某个地方,但我不知道它是什么。有什么建议吗?
server.js
var express = require('express');
var mongojs = require('mongojs');
var MongoClient = require("mongodb").MongoClient;
var app = express();
var port = process.env.PORT || 3000;
var db = mongojs('heroku_1x6kasdf');
var plantList = db.collection("plantList");
app.use(express.static(__dirname + "/"));
MongoClient.connect(process.env.MONGOLAB_URI, function(err, db) {
if (err) throw err;
console.log('SUCCESS! Connected to heroku_1x6kasdf database');
app.get("/", function(req, res) {
plantList
.find({})
.toArray(function(err, docs) {
if (err) throw err;
res.json(docs);
});
});
});
app.listen(port, function() {
console.log('SUCCESS! Connected to ' + port);
});
controller.js
var myApp= angular.module('myApp', []);
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http) {
var refresh = function() {
$http.get("/").success(function (response) {
$scope.plantList = response;
});
};
refresh();
}]);
index.html
<html ng-app="myApp">
...
<div ng-controller="AppCtrl">
<div ng-repeat="plant in plantList">
<p>{{plant.name}}</p>
<p>{{plant.variety}}</p>
<p>{{plant.quantity}}</p>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<script src="controllers/controller.js"></script>
</body>
</html>
当一个对象在一个数组中被找到两次时会出现这个错误。当你没有在转发器中指定 "Track by" 时,angular 通过特殊的 属性 "$$hashKey" 来跟踪它,通常是这样的:"object:76", "object:77"等
您可以 console.log 您的数组,然后检查其中一个对象是否具有相同的 $$hashKey
按植物编号追踪。我不推荐 track by $index
,因为它按位置而不是项目进行跟踪,这会导致问题。
<div ng-controller="AppCtrl">
<div ng-repeat="plant in plantList track by plant.id">
<p>{{plant.name}}</p>
<p>{{plant.variety}}</p>
<p>{{plant.quantity}}</p>
</div>
</div>
我只是从数据库中获取数据并使用 ngRepeat 将其显示在 html 文件中。连接到数据库成功,我可以向其中添加数据。此外,客户端的所有内容都可以正常工作,因为我能够使用定义的数组在 ngRepeat div 中显示数据。所以问题一定出在 .get() 方法的某个地方,但我不知道它是什么。有什么建议吗?
server.js
var express = require('express');
var mongojs = require('mongojs');
var MongoClient = require("mongodb").MongoClient;
var app = express();
var port = process.env.PORT || 3000;
var db = mongojs('heroku_1x6kasdf');
var plantList = db.collection("plantList");
app.use(express.static(__dirname + "/"));
MongoClient.connect(process.env.MONGOLAB_URI, function(err, db) {
if (err) throw err;
console.log('SUCCESS! Connected to heroku_1x6kasdf database');
app.get("/", function(req, res) {
plantList
.find({})
.toArray(function(err, docs) {
if (err) throw err;
res.json(docs);
});
});
});
app.listen(port, function() {
console.log('SUCCESS! Connected to ' + port);
});
controller.js
var myApp= angular.module('myApp', []);
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http) {
var refresh = function() {
$http.get("/").success(function (response) {
$scope.plantList = response;
});
};
refresh();
}]);
index.html
<html ng-app="myApp">
...
<div ng-controller="AppCtrl">
<div ng-repeat="plant in plantList">
<p>{{plant.name}}</p>
<p>{{plant.variety}}</p>
<p>{{plant.quantity}}</p>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<script src="controllers/controller.js"></script>
</body>
</html>
当一个对象在一个数组中被找到两次时会出现这个错误。当你没有在转发器中指定 "Track by" 时,angular 通过特殊的 属性 "$$hashKey" 来跟踪它,通常是这样的:"object:76", "object:77"等
您可以 console.log 您的数组,然后检查其中一个对象是否具有相同的 $$hashKey
按植物编号追踪。我不推荐 track by $index
,因为它按位置而不是项目进行跟踪,这会导致问题。
<div ng-controller="AppCtrl">
<div ng-repeat="plant in plantList track by plant.id">
<p>{{plant.name}}</p>
<p>{{plant.variety}}</p>
<p>{{plant.quantity}}</p>
</div>
</div>