小编dri*_*hev的帖子

Mongoose/MongoDB用户通知方案建议

我想知道用户/通知类型的最佳方案是什么,如下所示:

  • 您有多个用户.
  • 您有多个通知可能针对单个用户,某些用户或所有用户.
  • 您需要在存储中提供通知"读取"条目,以了解用户是否已阅读通知.

方案一

嵌入式通知方案

Notifications = new Schema ( {
    message : String,
    date : { type : Date, default: Date.now() }
    read : { type: Boolean, default : false }
});

User = new Schema( {
    username : String,
    name : String,
    notifications : [Notifications]
});
Run Code Online (Sandbox Code Playgroud)

优点:

  • 显示数据非常容易,因为调用User.find()会将通知显示为数组对象.

缺点:

  • 为每个用户创建通知时,需要对每个嵌入的通知执行.push
  • 每个用户的多个通知条目(数据库中的多个数据)
  • 巨型嵌入式文件(我读了一些关于<4MB限制的东西)
  • 由于它是嵌入式文档 - (mongoose DocumentArray),您无法搜索或跳过.每次访问用户时都会加载每个通知.

方案二

填充(DBRef like)对象

Notification = new Schema ({
    message : String,
    date : { type : Date, default : Date.now() } …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb

16
推荐指数
1
解决办法
5016
查看次数

Create React App 无法正确模拟 __mocks__ 目录中的模块

我有一个 Jest 的工作示例和来自的模拟__mocks__有效目录的模拟:

\n

通过简单的 Jest 设置

\n
// package.json\n{\n  "name": "a",\n  "version": "1.0.0",\n  "main": "index.js",\n  "scripts": {\n    "test": "jest"\n  },\n  ...\n  "devDependencies": {\n    "jest": "^26.6.3"\n  },\n  "dependencies": {\n    "@octokit/rest": "^18.0.12"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

进而/index.js

\n
const { Octokit } = require("@octokit/rest");\n\nconst octokit = new Octokit();\n\nmodule.exports.foo = function() {\n  return octokit.repos.listForOrg({ org: "octokit", type: "public" })\n}\n
Run Code Online (Sandbox Code Playgroud)\n

及其测试(/index.test.js ):

\n
const { foo } = require("./index.js");\n\ntest("foo should be true", async () => {\n    expect(await foo()).toEqual([1,2]);\n});\n
Run Code Online (Sandbox Code Playgroud)\n …

mocking jestjs create-react-app

7
推荐指数
1
解决办法
4786
查看次数

Javascript类和变量引用

我正在努力解决这个难题的Javascript OOP问题.

所以我有以下课程:

var ClassA = function() {
    this.initialize();
}

ClassA.prototype = {

    methods : ['alpha','beta','gama'],

    initialize : function() {
        for ( var i in this.methods ) {
            this[this.methods[i]] = function() {
                console.log(this.methods[i]);
            }
        }
    }
}

var a = new ClassA();
Run Code Online (Sandbox Code Playgroud)

当我调用每个方法时,我希望打印出它的名字,对吧?但这是我得到的:

a.alpha(); // returns gama ?!?
a.beta();  // returns gama ?!?
a.gama();  // returns gama
Run Code Online (Sandbox Code Playgroud)

但是当我的班级看起来像这样:

var ClassB = function() {
    this.initialize();
}

ClassB.prototype = {

    methods : ['alpha', 'beta', 'gama'],

    initialize: function() {
        for ( var i …
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
1
解决办法
459
查看次数

如何使用两个 useEffect 语句测试钩子?

我有以下钩子:


const useBar = () => {
  const [myFoo, setFoo] = useState(0);
  const [myBar, setBar] = useState(0);
  useEffect(() => {
    setFoo(myFoo + 1);
    console.log("setting foo (1)", myFoo, myBar);
  }, [setFoo, myFoo, myBar]);
  useEffect(() => {
    setBar(myBar + 1);
    console.log("setting bar (2)", myFoo, myBar);
  }, [setBar, myBar, myFoo]);
};
Run Code Online (Sandbox Code Playgroud)

使用组件时,我有无限循环的预期行为:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

const Bar = () => {
  useBar();
  return <div>Bar</div>;
};

function App() {
  return (
    <Bar />
  );
} …
Run Code Online (Sandbox Code Playgroud)

reactjs react-testing-library react-hooks-testing-library

6
推荐指数
1
解决办法
3919
查看次数

为什么overflow-x:hidden使我的绝对定位元素变得固定?

我想弄清楚,为什么设置overflow-x: hidden到一个HTML页面的身体让我的元素position: fixed,即使我把它设置为position: absolute.

在此演示中可以更好地理解效果.

这是代码:

html,
body {
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  overflow-x: hidden;/* If I remove this line everything is how I expect it to be! */
}

div.page {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 100%;
  border: 1px solid red;
  margin-bottom: 200px;
}

div.background {
  background: blue;
  position: absolute;
  width: 100%;
  height: 10%;
}
Run Code Online (Sandbox Code Playgroud)
<div class='background'></div>
<div class='page'></div>
<div class='page'></div>
<div class='page'></div>
<div class='page'></div> …
Run Code Online (Sandbox Code Playgroud)

html css

5
推荐指数
2
解决办法
7285
查看次数

如何获得在承诺链中取得成功的第一个承诺的价值

我正在寻找一种只有在另一个承诺失败时才能返回承诺的方法.

我怎样才能做到这一点?

我看起来像这样的承诺(当然我删除了不相关的代码):

getUserByUsername = function(username) {
    return promise(function(resolve, reject) {
       user = userModel.getByUsername(username);
       if ( user ) { resolve(user); } else { reject("user not found"); }
    });
};

getUserByEmail = function(email) {
    return promise(function(resolve, reject) {
       user = userModel.getByEmail(email);
       if ( user ) { resolve(user); } else { reject("user not found"); }
    });
};

checkPassword = function(user, password) {
    return promise(function(resolve, reject) {
       if ( user.isValidPassword(password) ) { resolve() } else { reject("password mismatch"); }
    });
}; …
Run Code Online (Sandbox Code Playgroud)

javascript promise es6-promise

4
推荐指数
1
解决办法
344
查看次数

fmt:formatNumber舍入不一致

我不知道这只是我,但是

<fmt:formatNumber var="roundedNumber" value="2.5" type="number" pattern="#" />
Run Code Online (Sandbox Code Playgroud)

给我

<%-- ${roundedNumber} == 2 --%>
Run Code Online (Sandbox Code Playgroud)

你知道为什么formatNumber不将这个舍入为3吗?

UPDATE

似乎如果数字是ODD正确舍入,但如果它是偶数,则不是.

2.5 will be rounded 2
2.51 will be rounded 3
3.5 will be rounded 4
3.51 will be rounded 4
4.5 will be rounded 4
4.51 will be rounded 5
... etc
Run Code Online (Sandbox Code Playgroud)

jsp jstl

1
推荐指数
1
解决办法
3708
查看次数