我有一个简单的要求.我试图在互联网上搜索以及文档,但失败了.
所以这就是我想要实现的目标:
我有一个架构:
const schema = Joi.object().keys({
a: Joi.string().required(),
b: Joi.string().required()
});
Run Code Online (Sandbox Code Playgroud)
现在,我如何配置它以允许对象中的任何其他键?
使用此架构,它只允许两个键a
和b
.如果我传递任何其他密钥,比如说,c
它会抛出一个错误,说c
不允许这样做.
根据这个答案,我试图找出数组的大小并将其保存在额外的字段中。
我有一个集合user_details
,文档结构类似于:
{
user_id : 1,
likes : [1,2,3,4],
likes_count : 0
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的查询如下:
db.user_details.update({user_id : 1},{$set:{ likes_count : this.likes.length }})
Run Code Online (Sandbox Code Playgroud)
但是,它会抛出错误
"message" : "Cannot read property 'length' of undefined"
Run Code Online (Sandbox Code Playgroud)
如何在额外字段中保存数组的长度?
PS:我使用的是 MongoDB 3.4
你有许多已知重量为w1,...,wn的宝石.编写一个程序,将石头重新排列成两堆,使两桩之间的重量差异最小.我有dp算法:
int max(int a, int b){
return a >= b ? a : b;
}
int diff(int* weights, int number_elements, int capacity){
int **ptrarray = new int* [capacity + 1];
for (int count = 0; count <= capacity; count++) {
ptrarray[count] = new int [number_elements + 1];
}
for (int i = 0; i <= number_elements; ++i){
ptrarray[0][i] = 0;
}
for (int i = 0; i <= capacity; ++i){
ptrarray[i][0] = 0;
}
for (int i = 1; i …
Run Code Online (Sandbox Code Playgroud) 我有两个型号User
和Email
。Email
有一个来自 的外键User
。
数据库中的电子邮件值在保存到数据库之前会被加密。当检索电子邮件时,它会被解密。因此,电子邮件在数据库中永远不会以纯文本形式存在,但在 API 中使用时可以以纯文本形式存在。我正在使用钩子来实现该功能。
我指定的钩子如下:
hooks: {
/**
* The query will have plain text email,
* The database has encrypted email.
* Thus, encrypt the query email (if any) BEFORE the query is fired
**/
beforeFind: query => {
if (query && query.where && query.where.email) {
const email = query.where.email;
const AESHash = AES.encrypt(email, KEY, { iv: IV });
const encrypted = AESHash.toString();
query.where.email = encrypted;
console.log(`[hook beforeFind] …
Run Code Online (Sandbox Code Playgroud) 我在一个集合中有文件如下:
{ _id : 1 , data : [7,4,0] }
{ _id : 2 , data : [4,5,6] }
{ _id : 3 , data : [6,7,8] }
Run Code Online (Sandbox Code Playgroud)
我想data
从两个或更多文档中联合数组.
我用来查找1和2 data
数组的id
并集的查询是:
db.coll.aggregate(
{
$match : {
_id: { $in: [1, 2] }
}
},
{
$group: {
_id: 0,
s0: { $first: "$data"},
s1: { $first: "$data"}
}
},
{
$project: {
_id: 0,
ans: { $setUnion: [ "$s0","$s1"]}
}
}
).pretty()
Run Code Online (Sandbox Code Playgroud)
但查询结果如下:
{7, 5, …
Run Code Online (Sandbox Code Playgroud) 我是react-native
Facebook和新手sdk
所以我按照这里给出的教程,一切正常,用户可以使用Facebook登录.
我的问题是:
下次打开应用程序时,如何检查用户是否已登录?
onLoginFinished
无论用户是否已经登录,我都认为每次都会调用回调.但事实并非如此.如果用户已登录,则onLoginFinished
未调用.是否有任何特定的回调来检查?或任何其他方法或一些解决方法?
我试着阅读react-native-fbsdk
这里的文档,但似乎还不够.
这是Login按钮:
<LoginButton
onLoginFinished={ (error, result) => { this.handleLogIn(error, result) } }
onLogoutFinished={() => { this.handleLogOut() } }
/>
Run Code Online (Sandbox Code Playgroud)
辅助函数:
handleLogIn(error, result) {
if (error) {
alert("Login failed with error: " + result.error);
} else if (result.isCancelled) {
alert("Login was cancelled");
} else {
alert("Login was successful")
AccessToken.getCurrentAccessToken().then(
(data) => {console.log(data);} //Refresh it every time
);
}
}
handleLogOut() {
console.log("User logged out");
alert("Log …
Run Code Online (Sandbox Code Playgroud) 这看起来是一件非常简单的事情,但我没有这样做。
我有一个字符串模式,yyyyMMddHH
我正在尝试解析2021061104
为LocalDateTime
这是代码:
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
class Main {
public static void main(String[] args) {
String pattern = "yyyyMMddHH";
String date = "2021061104";
DateTimeFormatter formatter =
new DateTimeFormatterBuilder()
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseLenient()
.appendPattern(pattern)
.toFormatter();
LocalDateTime ldt = LocalDateTime.parse(date, formatter);
}
}
Run Code Online (Sandbox Code Playgroud)
它抛出这个异常:
Exception in thread "main" java.time.format.DateTimeParseException: Text '2021061104' could not be parsed at index 8
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at …
Run Code Online (Sandbox Code Playgroud) mongodb ×2
algorithm ×1
c++ ×1
hapijs ×1
java ×1
java-time ×1
javascript ×1
joi ×1
node.js ×1
react-native ×1
sequelize.js ×1