방문을 저장하려면 lib/collections/visits.js
에 visitInsert
기능이 있습니다. 또한 로그인 한 사용자의 userId를 추가하지만 현재 방문은 올바르게 저장되지만 mongo 데이터베이스를 보면 userId
을 저장하지 않았습니다. 다음은 visitInsert
함수입니다.userID가 저장되지 않습니다.
Meteor.methods({
visitInsert: function(visitAttributes) {
check(Meteor.userId(), String);
check(visitAttributes, {
visit_date: String,
name: String
});
var properties = {
userId: this.userId
};
var visit = _.extend(visitAttributes, properties);
var visitId = Visits.insert(visit);
return {
_id: visitId
};
}
});
그래서 무엇이 잘못 되었나요?
업데이트 :
console.log(visit);
console.log(visit.userId);
var visitId = Visits.insert(visit);
모두 visit
및 visit.userId
이 현재의 ID와 함께 있도록, 올바른 값으로 채워진다 : lib/collections/visits.js
에서
나는 값이 무엇인지 볼 수있는 몇 가지 CONSOLE.LOG을 추가했습니다 로그인 한 사용자. 그러나 Visits.insert
으로 데이터베이스에 저장하면 방문이 저장되지만 userId
??? 이 방법에서 호출 때문에이 문제가 allow
콜백 무관했다 :
추가 visits.js
에서 allow
콜백 :
Visits.allow({
insert: function (userId, visit) { return !! userId; },
update: function(userId, visit) { return ownsDocument(userId, visit); },
remove: function(userId, visit) { return ownsDocument(userId, visit); }
});
솔루션
2 업데이트되었습니다. 나는aldeed:collection2
패키지를 사용하고 있기 때문에 모든 속성을 명시 적으로 검사해야한다는 것을 알았습니다. 양식에서 오는 것뿐만 아니라 삽입 방법에 추가하는 것도 있습니다.
var properties = {
userId: Meteor.userId()
}
함수가 이상한 것 같다 수 : 키스 니콜라스 사용 말했듯이
삽입은 실제로 정의되지 않은 값을 반환합니다. 내가 아는 한. – MurWade
아니요, –
http : //docs.meteor ID를 반환합니다.co.kr/#/basic/Mongo-Collection-insert first line :) –