我正在使用MeteorJS
填充应用,并且我已经坚持了几天这个问题。让我们说我的应用程序有一个名为HistoryItem
的集合。这就是我如何定义操作此集合的规则:
history_item.js
HistoryItem.allow({
insert: function (userId, doc) {
console.log('Histoy item allow insert');
var n = 100000000, m = 10;
doc.modified = new Date;
doc.latitude = Math.round(doc.latitude*n)/n;
doc.longitude = Math.round(doc.longitude*n)/n;
doc.noise = Math.round(doc.noise*m)/m;
var u = Meteor.users.find({ _id: userId }).fetch();
if (u.length > 0) {
doc.user = {};
doc.user.name = u[0].profile.name;
}
var ok = doc.owner || doc.noisetube;
if (ok) {
LiveUser.upsert({owner: doc.owner}, doc);
}
return userId;
},
remove: function(userId, doc){
return true;
}
});
Meteor.publish('history_item', function (userId) {
return HistoryItem.find({owner: userId}, {sort: {createdAt: -1}});
});
在客户端,我有这段代码将文档插入到HistoryItem集合中:
client.js
...
var cursor;
while (!cursor){
cursor = Meteor.subscribe('history_item', Meteor.userId());
}
var cursor = HistoryItem.find();
var count = cursor.count();
console.log("DEBUG: Enter this point");
if (count < 100) {
console.log("1");
HistoryItem.insert(msg, function(err, res) {});
}
else {
Meteor.call('removeLastHistoryItem', Meteor.userId());
console.log("2");
HistoryItem.insert(msg, function(err, res) {});
}
...
奇怪的是,在我的浏览器控制台中,它会注销该行:
"DEBUG: Enter this line"
和"1"
多次,但在我的服务器端控制台中,它只显示行"History item allow insert"
一次。
我不知道为什么会发生这么奇怪的事情,我相信这就是为什么我的应用程序不能按照我的意愿行事的原因。
我已经被困在这个问题好几天了。所以我真的,真的希望你们能帮忙。谢谢&amp;非常感谢先进!