Javascript 为什么不';难道我的装置没有被插入Meteor.js中的Mongo收藏吗?
当我运行Javascript 为什么不';难道我的装置没有被插入Meteor.js中的Mongo收藏吗?,javascript,meteor,Javascript,Meteor,当我运行Files.find().fetch()时,我的Chrome控制台中只显示了5个装置。正如你所看到的,我有更多的装置,我想添加到我的收集。第一个文件位于/lib中,名为files.js,如下所示: Files = new Mongo.Collection('files'); Meteor.methods({ deleteFile: function(id) { // check to see if user is actually the owner of th
Files.find().fetch()
时,我的Chrome控制台中只显示了5个装置。正如你所看到的,我有更多的装置,我想添加到我的收集。第一个文件位于/lib中,名为files.js
,如下所示:
Files = new Mongo.Collection('files');
Meteor.methods({
deleteFile: function(id) {
// check to see if user is actually the owner of the file
var file = Files.findOne(id);
if (Meteor.userId() != file.owner) {
// user could've sent any data, but we want the one in the database,
// so we find do Files.findOne(id).owner instead of data.owner
throw new Meteor.Error('Not Authorized', 'User is not the right owner?');
}
Files.remove({_id: id});
},
insertFile: function(data) {
// user must be logged in
if (!Meteor.userId()) {
throw new Meteor.Error('Not Authorized', 'User is not logged in!');
}
// set owner
data.owner = Meteor.userId();
// insert into the db collection
Files.insert(data);
},
updateFile: function(id, data) {
// user must be logged in
if (!Meteor.userId()) {
throw new Meteor.Error('Not Authorized', 'User is not logged in!');
}
// check to see if user is actually the owner of the file
var file = Files.findOne(id);
if (Meteor.userId() != file.owner) {
// user could've sent any data, but we want the one in the database,
// so we find do Files.findOne(id).owner instead of data.owner
throw new Meteor.Error('Not Authorized', 'User is not the right owner?');
}
// ensure data belongs to current user, client can't change the user
data.owner = Meteor.userId();
// update the db collection
Files.update(id, data);
}
});
Meteor.startup(function() {
// code to run on server at startup
// count recipes entry
var num = Files.find().count();
if (num === 0) {
var fixtures = [
{
username: 'FakeUser-1',
firstName: 'John1',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-2',
firstName: 'John2',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-3',
firstName: 'John3',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-4',
firstName: 'John4',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: true
},
{
owner: 'FakeUser-1',
fileName: 'my_FakeFileAA.py',
ancestor: 'master-fakeFileA.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'FakeFileAB.py',
ancestor: 'master-fakeFileA.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'myFakeFileBA.py',
ancestor: 'master-fakeFileB.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'myFakeFileBB.py',
ancestor: 'master-fakeFileB.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'default-1A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'default-1B.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-2',
fileName: 'default-2A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3B.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3C.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3D.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3E.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-4',
fileName: 'default.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: false
}
];
fixtures.forEach(function(element) {
Files.insert(element);
});
}
});
第二个文件位于/server中,名为fixtures.js
,如下所示:
Files = new Mongo.Collection('files');
Meteor.methods({
deleteFile: function(id) {
// check to see if user is actually the owner of the file
var file = Files.findOne(id);
if (Meteor.userId() != file.owner) {
// user could've sent any data, but we want the one in the database,
// so we find do Files.findOne(id).owner instead of data.owner
throw new Meteor.Error('Not Authorized', 'User is not the right owner?');
}
Files.remove({_id: id});
},
insertFile: function(data) {
// user must be logged in
if (!Meteor.userId()) {
throw new Meteor.Error('Not Authorized', 'User is not logged in!');
}
// set owner
data.owner = Meteor.userId();
// insert into the db collection
Files.insert(data);
},
updateFile: function(id, data) {
// user must be logged in
if (!Meteor.userId()) {
throw new Meteor.Error('Not Authorized', 'User is not logged in!');
}
// check to see if user is actually the owner of the file
var file = Files.findOne(id);
if (Meteor.userId() != file.owner) {
// user could've sent any data, but we want the one in the database,
// so we find do Files.findOne(id).owner instead of data.owner
throw new Meteor.Error('Not Authorized', 'User is not the right owner?');
}
// ensure data belongs to current user, client can't change the user
data.owner = Meteor.userId();
// update the db collection
Files.update(id, data);
}
});
Meteor.startup(function() {
// code to run on server at startup
// count recipes entry
var num = Files.find().count();
if (num === 0) {
var fixtures = [
{
username: 'FakeUser-1',
firstName: 'John1',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-2',
firstName: 'John2',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-3',
firstName: 'John3',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: false
},
{
username: 'FakeUser-4',
firstName: 'John4',
lastName: 'Smith',
email: 'k@opt.net',
phone: '555-555-5555',
streetAdd: '8 Milk Street',
town: 'Compton',
state: 'NY',
econtact: {
eName: 'Jane Smith',
phone: '555-555-5555'
},
prefs: 'deaf',
admin: true
},
{
owner: 'FakeUser-1',
fileName: 'my_FakeFileAA.py',
ancestor: 'master-fakeFileA.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'FakeFileAB.py',
ancestor: 'master-fakeFileA.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'myFakeFileBA.py',
ancestor: 'master-fakeFileB.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'myFakeFileBB.py',
ancestor: 'master-fakeFileB.py',
content: '',
type: 'python',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'default-1A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-1',
fileName: 'default-1B.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-2',
fileName: 'default-2A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3A.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3B.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3C.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3D.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-3',
fileName: 'default-3E.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: true
},
{
owner: 'FakeUser-4',
fileName: 'default.web',
ancestor: 'default.web',
content: ['', '', ''],
type: 'web',
creationDate: new Date(),
modifiedDate: new Date(),
private: false
}
];
fixtures.forEach(function(element) {
Files.insert(element);
});
}
});
特别是,仅插入的5个文档是上面列出的前4个文档和最后一个文档(也许这会有所帮助)。我使用的是Meteor.js版本1.5.1
修正案:
另外,当我打开meteor mongo时,我得到0。我在这里真是不知所措
提前谢谢 您的出版物(我看不到其代码)是错误的。您可能正在使用
Meteor.publish('files',function(){return files.find({private:{$ne:true}}});})
,它显然只会返回5个非私有文件
如果您在客户机上查询count,它只会显示客户机看到的内容。为什么要将两种不同的文档类型混合到同一个集合中?仅从查看它来看,我怀疑您的代码有效,但您的观察是错误的。如何计算插入的文档数?我知道@Styx会将它们分开later@dnickless我在上面的代码中使用
Files.find().count()
,在Chrome控制台中使用Files.find().fetch()
,只需查看其中的5个对象。(顺便说一句,我也尝试过重置和重新启动Meteor)我会尝试在fixtures.forEach调用中添加一些调试输出,看看insert语句是否真的被调用了n次。你有没有试过清空你的收藏然后重新开始?您正在寻找正确的数据库/集合吗?问一些愚蠢的问题,但这似乎有点模糊。。。