我在用
METEOR@1.4.4.2
WebStorm@2017.1.1
Chrome@58.0.3029.110 (64-bit)
macOS Sierra 10.12.5
ecmascript@0.7.3
ecmascript-runtime@0.3.15
Run Code Online (Sandbox Code Playgroud)
最近,调试器开始在错误的线路上停止,但只是在视觉上,大多数情况下它就像实际断点后面的8-14行.
例如
*橙色条表示谷歌浏览器中的断点
控制台输出:
另外,正如您所看到的,某些行变暗,这意味着我无法在浏览器中设置断点.
WebStorm内部调试器中的行为是相同的.所以我认为这不是Chrome的错.看起来源映射已被破坏.我不知道是WebStorm,还是Meteor.在这种情况下,调试非常困难......
让我们假设我在React-Apollo中有以下GraphQL查询
const CurrentUserForLayout = gql`
query CurrentUserForLayout($avatarID: Int!) {
currentUser {
avatar_url(avatarID: $avatarID)
}
}
`;
const ProfileWithData = graphql(CurrentUserForLayout, {
options: { variables: { avatarID: 1 } },
})(Profile);
Run Code Online (Sandbox Code Playgroud)
现在,如果我想让我的React组件Profile
更改avatarID,
我该怎么办?
我是React和GraphQl的新手,我不太明白这里的连接:
graphql(CurrentUserForLayout, {
options: { variables: { avatarID: 1 } },
})(Profile);
Run Code Online (Sandbox Code Playgroud)
我真的需要另一个父组件ProfileWithData
来传递另一个父组件avatarID
吗?但是,如果ID由Profile组件操纵,我如何让Parent组件知道呢?
假设我有以下两条路线:
...
<Route exact path="/:param1?/" component={Home}/>
<Route path="/news" component={News}/>
...
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试命中路由时/news
,触发Home
了参数的根路由param1
...
我假设解决方案是在param1之前设置一个问号,/?param1
这样它就可以从路由中保存,但我无法弄清楚如何在react-router v4中执行此操作
尝试使用以下命令在我的服务器上启动应用程序时出现此错误:
meteor
Run Code Online (Sandbox Code Playgroud)
错误:
Error: EISDIR: illegal operation on a directory, unlink '/home/.../.../myapp/.meteor /local/dev_bundle'
at Error (native)
at Object.fs.unlinkSync (fs.js:932:18)
at exports.makeLink (/tools/cli/dev-bundle-links.js:20:8)
at [object Object].ensureDevBundleLink (/tools/project-context.js:1416:7)
at [object Object]._readFile (/tools/project-context.js:1350:10)
at new exports.ReleaseFile (/tools/project-context.js:1300:8)
at /tools/cli/main.js:825:22
Run Code Online (Sandbox Code Playgroud)
我的应用程序运行正常.赢得.机.
我不知道导致错误的是什么,请帮忙.
我想要做的是添加一个用于上传文件的按钮,我可以设置样式并显示所选文件的名称。
我已经搜索了很多,我搜索的越多,我发现的不同解决方案就越多。我发现,你不能直接设置输入的样式,因为你不能...... :(。
最后,我从每个解决方案中挑选了一点,并得出以下结论:
我在标签中为 input[type file] 设置了一个 span,并通过 display:none; 隐藏了输入。
现在我可以根据我的需要设置跨度的样式,并在单击时调用输入。在最后的小 JS 中,获取输入的值(所选文件的名称是什么)并将其显示在样式按钮上的跨文本中。
但看看你自己:
#input-file {
display: none;
}
.upload-btn {
display: block;
text-align: center;
margin: 20px auto 20px;
width: 50%;
height: 30px;
background-color: #fcff7f;
line-height: 30px;
}
.upload-btn:hover {
background-color: #c39d5a;
color: white;
cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)
<label class="upload-btn">
<input type="file" id="input-file" onchange="changeText()" />
<span id="selectedFileName">Browse</span>
</label>
<script type="text/javascript">
function changeText() {
var y = document.getElementById("input-file").value;
document.getElementById("selectedFileName").innerHTML = y;
}
</script>
Run Code Online (Sandbox Code Playgroud)
我想知道的是,这有什么问题?就我而言,它非常简单,简单到我“还”不明白为什么我在互联网上找到的所有解决方案都更加困难。他们总是尝试使用虚假输入,不透明等等。
所以请非常有经验的人告诉我是否可以像这样使用它,或者我必须改变它吗?要什么?
谢谢;) 以及很多英语不好的借口。
我正在使用带有mysql和sequelize的meteor的react-apollo,我仍然是JS的初学者.假设我的apollo-server上有以下解析器函数:
export default resolvers = {
Query: {
posts(_, args){
return Post.findAndCountAll({ where: args });
},
numberOfPosts(){
return /// the number of selected posts
}
}
Run Code Online (Sandbox Code Playgroud)
我想从数据库中选择满足某些条件的一些数据,然后计算所选行的数量并在"numberOfPosts"字段中返回它们.
findAndCountAll()
返回一个对象,其中包含选定的行和计数.我想让我post()
只返回选定的行,而我的numberOfPosts()只返回所选帖子的计数.现在,两者都是由posts()返回的.
我的架构是:
type Post {
id: Int
date: Float
text: String
}
type NumberOfPosts{
total: Int
filtered: Int
}
type Query {
posts(
id: Ind,
offset: Int,
limit: Int,
filter: String): [Post]
numberOfPosts:[NumberOfPosts]
}
schema {
query: Query
}
Run Code Online (Sandbox Code Playgroud)
目标是以下列格式接收数据:
{
"data": {
"numberOfPosts": [
{
"total": 1000,
"filtered": 21 …
Run Code Online (Sandbox Code Playgroud) 我有以下型号:
AuthorModel.hasMany(BookModel);
BookModel.belongsTo(AuthorModel);
Run Code Online (Sandbox Code Playgroud)
有些作者没有书.
我想选择一个作者,他的一本书的名字或头衔与搜索字符串相匹配.
我可以通过以下声明来实现这一点,但仅限于在BookModel中拥有书籍的作者
Author.findOne({
include: [{
model: Book,
where: {
[Op.or]: [
{'$author.name$': 'search string'},
{ title: 'search string'}
]
},
}]
})
Run Code Online (Sandbox Code Playgroud)
这给了我或多或少的以下mysql
查询:
SELECT
`author`.`name`,
`book`.`title`
FROM `author` INNER JOIN `book`
ON `author`.`id` = `book`.`authorId`
AND ( `author`.`name` = 'search string' OR `book`.`title` = 'search string');
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果作者没有书籍,那么结果是空的.即使有作者符合搜索条件.
我试图将include设置为required: false
,给出了一个left outer join
.在这种情况下,我得到一些不匹配的结果.省略了where子句.
我如何更改sequelize
查询,或者什么是正确的mysql
查询?
我是电子新手,试图了解分布概念的基础知识。
我已经为 Windows 构建了一个基本的电子应用程序electron-builder
。
生成的dist
文件夹包含一个安装程序,My App Setup 0.1.0.exe
以及一个win-unpacked
带有My App.exe
安装程序首先打开一个安装窗口,在某个地方安装一些东西,然后运行我的应用程序。
My App.exe
直接运行我的应用程序。
.blockmap
为了什么?现在我有一个connect.php文件,例如:
$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";
$con = new mysqli(
$mysql_host,
$mysql_user,
$mysql_password,
$mysql_database
);
// Check connection
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
Run Code Online (Sandbox Code Playgroud)
在使用MySQL查询的所有其他php文件中,我使用“ include'connect.php';”
对于W3Schools上的Instance,它们为每个查询创建一个新连接,然后在使用后将其关闭。参见此处:w3schools.com:我不确定他们是否只是出于展示目的而这样做,还是这样做的最佳实践。
问题是,什么是最佳实践?每次选择后我都必须关闭连接,然后为下一个查询建立一个新连接吗?如果没有,我最后什么时候必须关闭连接?在带有所有查询的php文件的末尾?
谢谢
在react-testing-library
对其元素执行一些测试之前,您必须渲染您的反应组件。
对于同一组件的多次测试,是否应该避免多次渲染该组件?或者你必须在每个
test()/it()
块中渲染它?
您应该选择每个块中的组件元素(例如按钮)test()/it()
,还是应该取消选择并仅选择一次?
它对测试的执行时间有影响吗?
其中一种方法是最佳实践/反模式吗?
为什么最后一个例子失败了?
对于基本组件我有以下测试方法:
function MyComponent() {
return (
<>
<button disabled>test</button>
<button disabled>another button</button>
</>
);
}
Run Code Online (Sandbox Code Playgroud)
例如
describe("MyComponent", () => {
it("renders", async () => {
const { getByRole } = render(<MyComponent />);
const button = getByRole("button", { name: /test/i });
expect(button).toBeInTheDocument();
});
it("is disabled", async () => {
// repetetive render and select, should be avoided or adopted?
const { getByRole } = render(<MyComponent />);
const button = …
Run Code Online (Sandbox Code Playgroud) 我按以下方式使用 fs.writeFile 方法:
fs = require('fs');
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
console.log('It\'s saved!');
fs.readFile('message.txt', function (data) {
console.log("Asynchronous read: " + data.toString());
});
});
Run Code Online (Sandbox Code Playgroud)
输出:
It's saved!
Asynchronous read: Hello Node.js
Run Code Online (Sandbox Code Playgroud)
由于我收到了预期的输出,因此我假设该文件message.txt
是在某处创建的,并且我实际上正在对其进行写入和读取。但我在我的系统上找不到它。那么是在哪里message.txt
创建的呢?
我正在使用 Meteor.js
我在一些javascript代码中发现了这个: +(x > 180)
如果x小于180,则返回此值似乎为0;对于x> 180,则返回1.
它是一个简单的比较平滑的方式,但我找不到任何相关的文档,我不知道它来自哪里(javascript/jquery /其他库).所以我不知道什么时候可以使用它.
我的意思是,我知道x> 180是什么,但是如何围绕它简单的"+()",替换整个"if(x> 180){return 1;} else {return 0}.
有人可以给我一个解释或链接到这个声明的ducumentation.谢谢
我试图了解以下安全方面:
如果我理解正确,在 PHP 中,URL 直接路由到服务器上的特定文件。例如https://mypage.com/secretFunctions.php
将路由到secretFunctions.php
. 如果我通过基本身份验证保护此路由,身份验证将在处理文件并将其提供给客户端之前进行。结果,只有经过身份验证的用户才能看到呈现的内容。
如果是客户端 node.js 应用程序,整个 App.js 代码将发送到客户端并在那里进行处理。URL 始终指向同一个文件。该文件中定义的路由决定了将执行和呈现的代码片段。即使我通过任何类型的身份验证保护任何特定路由,用户仍将获得整个代码。
有没有办法防止这种情况?防止客户端收到私有路由的私有代码,只要不认证就行?
javascript ×4
meteor ×3
mysql ×2
node.js ×2
reactjs ×2
css ×1
debugging ×1
electron ×1
graphql ×1
graphql-js ×1
html ×1
jestjs ×1
php ×1
react-apollo ×1
react-router ×1
sequelize.js ×1
webstorm ×1