我有全局数组,工作得很好,并在我点击提交表单后存储来自用户所选图像的URL。如何为每个网站入口创建一个全局变量?
问题是当我想提交另一个表单时,全局数组仍然具有之前提交的URL。
我想要做的是为每个用户创建一个数组来存储他的URL,一个他点击提交,数组将被删除或删除。所以如果有多个用户使用相同的功能,他们每个人都将有他自己的阵列来存储他的网址
我该怎么做?
这是我曾尝试,但是当我在提交表单页面上点击,什么也没有发生
第一,这是由用户返回所选择的图像的URL的方法,该方法在两个存在文件夹(两者/ file.js)
storeUrlInDatabaseSS: function(url) {
check(url, String);
Modules.both.checkUrlValidity(url);
try {
return url;
} catch(exception) {
return exception;
}
}
然后我创建在客户端侧的会话变量(客户端/ file.js)
Session.set("screenshots", []);
Session.set("i", 0);
var screenshots = Session.get("screenshots");
var i = Session.get("i");
和这里i中的URL存储在阵列中
let _addUrlToDatabaseSS = (url) => {
screenshots[i++] = url;
Session.set("screenshots", screenshots);
};
和正在使用Meteor Collection Hook Package
,我加入的这两行代码应该是兴奋之后用户按下提交,它们存在内部“客户端/ files.js”目录
Products.before.insert(function (userId, doc) {
doc.screenShots = Session.get("screenshots");
});
现在每当我点击提交什么也没有发生,我认为这个问题是因为没有什么实际存储在这里集合中的screenShots属性
screenShots: {
type: [String]
},
当我设置屏幕截图默认属性为空数组像下面的代码,提交按钮工作
screenShots: {
type: [String],
autoValue: function() {
return [];
}
},
我试图用使用AutoForm.hooks的其他方式
AutoForm.hooks({
submitPostForm: {
before: {
insert: function(doc) {
doc.$set.screenShots = Session.get("screenshots");
}
}
}
});
的是我在.html文件
{{> quickForm collection="Products" id="submitPostForm"
type="method" meteormethod="submitPost" omitFields="createdAt, previewImage, screenShots, sourceCode, userID"}}
形式,这是该方法的用户触发一次提交表单,它存在于服务器端。
submitPost: function (app) {
// Console.log('new App:', app);
check(app, {
title: String,
description: String,
category: String,
price: Number
});
Products.insert(app);
}
由于某种原因,我之前挂钩不工作,我不明白为什么! 我在这里做错了什么?
对不起,在我看来,你正在寻找收藏,但你的问题是不可理解的。请重写你正在寻找的东西,而不是你已经尝试过的东西。 –
为什么不使用'Session'来存储用户特定的信息?甚至在客户端声明的全局数组对每个用户都是唯一的。那么你的问题到底是什么? –
@BlazeSahlzen我可以使用Session为每个用户专门创建一个全局数组吗?如果是的话,你能告诉我如何?因为这是实际寻找的内容 –