我遇到了流星1.6的困难。首先,我创建了一个数据库实例,并尝试在客户端进行订阅。通过表单,我可以将数据输入我的数据库。但无法通过订阅检索它。任何人都可以告诉我在我的代码中做了什么错误?
import { Template } from "meteor/templating";
import { Notes } from "../lib/collection";
import { Meteor } from "meteor/meteor";
// import { ReactiveDict } from 'meteor/reactive-dict';
import "./main.html";
/*
Template.body.onCreated(function bodyOnCreated() {
this.state = new ReactiveDict();
Meteor.subscribe("db1");
}); */
Template.Display.helpers({
notes() {
Meteor.subscribe("db1");
return Meteor.call('data');
}
});
Template.body.events({
"click .delete": function() {
Notes.remove(this._id);
},
"submit .formSubmit": function(event) {
event.preventDefault();
let target = event.target;
let name = target.name.value;
Meteor.call("inputs", name);
target.name.value = "";
return false;
},
"click .userDetail": function() {
if (confirm("Delete the user Detail ?")) {
Notes.remove(this._id);
}
}
});
这是发布代码:
import { Mongo } from 'meteor/mongo';
export const Notes = new Mongo.Collection('notes');
Meteor.methods({
inputs:(name)=> {
if (!Meteor.user()) {
throw Meteor.Error("Logged in");
}
Notes.insert({
name: name,
createdAt: new Date()
});
},
data:()=>{
return Notes.find({});
}
});
答案 0 :(得分:2)
Meteor.subscribe("notes");
应该在Template.body.onCreated
lifycycle方法中。你需要写一个
单独发布代码而不是Meteor.method
内部。见下面的格式,
Meteor.publish('notes', function tasksPublication() {
return Notes.find({});
});
帮助者内部只需调用下面的订阅集合
Template.Display.helpers({
notes() {
return Notes.find({});
}
});
**注意:**切勿在辅助方法中使用
Meteor.call
。helpers
是被动和实时的。