我正在从我的Rails应用程序发送电子邮件.它在开发环境中运行良好,但在暂存时失败.我收到以下错误:
Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)
Run Code Online (Sandbox Code Playgroud)
请注意,我的暂存没有域名.
这是我在staging.rb中的设置
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'my.ip.addr.here:80'
:user_name => "my_email_name@gmail.com",
:password => "my_email_password",
:authentication => 'login'
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
编辑.
添加:tls => true选项后,我得到
OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)
Run Code Online (Sandbox Code Playgroud)
然后我将端口更改为25,现在我得到了这个(延迟30秒):
Timeout::Error (execution expired)
Run Code Online (Sandbox Code Playgroud) 我想从ActiveSupport :: SafeBuffer中获取String对象.方法to_s返回相同类型的ActiveSupport :: SafeBuffer.只有to_sym.to_s返回String,但这更像是一个hack.这是我的控制台播放:
irb(main):008:0> s = ActiveSupport::SafeBuffer.new("asdf")
# => "asdf"
irb(main):009:0> s.class
# => ActiveSupport::SafeBuffer
irb(main):010:0> s.to_s.class
# => ActiveSupport::SafeBuffer
irb(main):011:0> s.to_sym.to_s
# => "asdf"
irb(main):012:0> s.to_sym.to_s.class
# => String
Run Code Online (Sandbox Code Playgroud) 我需要一个具有日期和年份指定值的js Date对象.我希望
new Date("2000-01-01")给我一个2000对象的Date对象getFullYear(),但是如果我的计算机的时间设置设置为芝加哥时区,我会得到Fri Dec 31 1999 18:00:00 GMT-0600 (CST),而对于布宜诺斯艾利斯:Fri Dec 31 1999 22:00:00 GMT-0200 (ARST).
有没有办法创建Date对象,.getFullYear()返回我们在构造函数中设置的日期,无论在用户的机器上设置什么时区?
更新:我需要将此Date对象用于另一个库(调用其.getFullYear()方法,因此使用UTC getter实际上并没有帮助.
我使用jsTree库的拖放插件(3.0版),通过以下代码,我可以绑定到drag'n'drop操作的末尾,但是我看不到获取对目标节点(该节点)的引用的方法我继续)。
$(document).on('dnd_stop.vakata', function(e, data) {
// how to get target_node here?
});
Run Code Online (Sandbox Code Playgroud) 我的HTML看起来像这样:
<div class="item">
<div class="check">
<input type="checkbox">
</div>
<div class="descr"> ... </div>
<div class="details"> ... </div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何在div.check水平和垂直方向的中间对齐复选框?(".item"div 的高度是动态的)
var post = mongoose.Schema({
...
_createdOn: Date
});
Run Code Online (Sandbox Code Playgroud)
我想_createdOn仅允许在创建文档时设置字段,并禁止在将来的更新中更改它.它是如何在Mongoose中完成的?
有没有办法在MongoDB中为'E11000重复键错误'设置自定义错误消息?
(最好使用猫鼬):
userSchema.index({ name: 1, email: 1 }, { unique: true });
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的SVG添加一个阴影.它适用于所有2D对象,但是当相同的滤镜应用于直线(任一<line>或者<path>)时,该线变为不可见,并且不添加阴影.
我有<g>元素<rect>和<image>内部.<g>有mouseout事件监听器.问题是当我将鼠标从rect移动到图像(在同一个内g)时,会触发mouseout事件(然后是'mouseover').
这是一个例子.(和Jsfiddle)
var x = 120;
var g = d3.select("svg")
.append("g")
.on('mouseover', function() {
d3.select(this).append("text").text("mouseover").attr('transform','translate(0,'+x+')');
x+=20;
})
.on('mouseout', function() {
d3.select(this).append("text").text("mouseout").attr('transform','translate(0,'+x+')');
x+=20;
})
g.append("rect")
.attr('width', 100)
.attr('height', 100)
.style('fill', 'lightgreen')
g.append('image')
.attr("width", 30)
.attr("height", 30)
.attr("x", 35)
.attr("y", 35)
.attr("xlink:href","https://www.gravatar.com/avatar/f70adb32032d39add2559c2609a90d03?s=128&d=identicon&r=PG")
Run Code Online (Sandbox Code Playgroud)
如何防止mouseout事件触发?
我正在使用字符串数组来保存电子邮件:
var user = new Schema({
// other fields...
emails: [String]
});
Run Code Online (Sandbox Code Playgroud)
更新此字段时遇到麻烦.比方说,email1和email2是我从视图中收到的值:
这很有效:
user.emails = [email1, email2];
user.save();
// fields are updated, all good
Run Code Online (Sandbox Code Playgroud)
而这不是:
user.emails[0] = email1;
user.emails[1] = email2;
user.save(function(err, savedUser) {
console.log(savedUser.emails); // updated array [email1, email2]
// but if I retrieve now the user, the 'emails' field will not have above changes.
});
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,这有效:
user.emails = [email1];
user.emails[1] = email2;
user.save();
// user.emails == [email1, email2];
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?
Map.prototype.forEach用两个参数进行回调:值和键.是否有可能得到每个条目的索引,类似于Array.prototype.forEach((value, index) => {})
我有多个在页面生命周期内发出值的可观察对象。例如:
chartData$: Observable;
tableData$: Observable;
filterData$: Observable;
Run Code Online (Sandbox Code Playgroud)
用户可以随时单击“下载”按钮,并获取结合了每个可观察量最后发出的值的 JSON:
downloadButtonClicked$.pipe(
combine chartData$, tableData$ and filterData$ // <- how do I get latest values here?
).subscribe(([chart, table, filter]) => downloadJson(chart, table, filter))
Run Code Online (Sandbox Code Playgroud)
但是,downloadJson当这 3 个可观察量中的任何一个在页面生命周期中发出值时,不应调用该函数,仅在单击“下载”时调用。
太长了;
工作最优雅的解决方案(如迈克建议) https://stackblitz.com/edit/typescript-jm3zma?file=index.ts
我有一个服务器组件ChatList,它从数据库中获取数据并显示它:
// server component
import Link from "next/link";
import db from "@/prisma";
export const ChatList = async () => {
const chats = await db.chat.findMany();
return (
<ul>
{chats.map((chat) => (
<li key={chat.id}>
<Link href={`chat/${chat.id}`}>{chat.name}</Link>
</li>
))}
</ul>
);
};
Run Code Online (Sandbox Code Playgroud)
然后我有一个服务器操作,它在同一个表中创建新记录:
"use server";
import db from "@/prisma";
export const createChat = async (name: string) => {
const newChat = await db.chat.create({
data: { name },
});
return newChat;
};
Run Code Online (Sandbox Code Playgroud)
创建新记录后,如何告诉服务器组件ChatList …