小编twh*_*mon的帖子

如何在Waterline或MongoDB中选择,分组和加入

我有三个模型:user,nounusernoun(user_noun在PHP/Eloquent中).user和之间存在着多对多的关系noun."pivot"表有一个额外的属性score.我可以将此查询与Eloquent一起使用来汇总用户获得用户总分的每个名词的分数:

$users = User::leftJoin('noun_user', 'user.id', 'noun_user.user_id')
    ->groupBy('user.id')
    ->select('user.*', DB::raw('sum(noun_user.score) as score'))
    ->orderBy('score', 'desc')
    ->get();
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何在Waterline中使用它.这可行,但不是在我取消注释该.populate('user')行时.我需要user填充.

UserNoun
    .find({})
    //.populate('user')
    .groupBy('user')
    .sum('score')
    .sort({ score: 'desc' })
    .exec((err, usernouns) => {
    return res.json(usernouns)
})
Run Code Online (Sandbox Code Playgroud)

这是一个有效的.native()查询:

UserNoun.native(function(err, collection) {
    collection.aggregate([
        {
            $lookup: {
                from: 'user',
                localField: 'user',
                foreignField: '_id',
                as: 'user'
            }
        },
        {
            $group: { _id: '$user', total: { $sum: '$score' } } …
Run Code Online (Sandbox Code Playgroud)

php mongodb eloquent sails.js waterline

11
推荐指数
2
解决办法
629
查看次数

如何用jQuery捕获altKey + i,u,e,n?

我正在尝试为外语设置键盘.我正在使用jQuery将按键转换成外来字符.我在用:

  • A - Z
  • ALT + A - Z
  • SHIFT + A - Z
  • ALT+ SHIFT+A - Z

    我的代码适用于所有这些,除了这4个:

    • ALT + I
    • ALT + U
    • ALT + E
    • ALT + N

它工作正常,在Firefox,但在Chrome和Safari(我使用的是Mac)我得到这些重音符号- ,ˆ,,¨ -而不是一个应该进入textarea的外来字符.´˜

以下是一些代码:

function type(e, char, textArea) {
    e.preventDefault();
    var start = textArea[0].selectionStart;
    var end = textArea[0].selectionEnd;
    var len = textArea.val().length;
    var newPos = start + char.length;
    textArea.val(textArea.val().substring(0, start) + char + textArea.val().substring(end, len));
    textArea[0].setSelectionRange(newPos, newPos);
}
$('textarea').keydown(function(e) {
        var …
Run Code Online (Sandbox Code Playgroud)

javascript macos jquery keyboard-shortcuts

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

如何让.querySelectorAll()或.forEach()在Firefox中运行?

我想用class删除所有元素sample.

这在Chrome和Safari中运行良好:

document.querySelectorAll('.sample').forEach(function(e) {
    e.parentNode.removeChild(e);
});
Run Code Online (Sandbox Code Playgroud)

这是我在Firefox中遇到的错误:

TypeError:document.querySelectorAll(...).forEach不是函数

javascript foreach

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

进度条适用于Android API 23,但不适用于21或22

这是xml部分:

<ProgressBar
  android:layout_width="50dp"
  android:layout_height="match_parent"
  android:padding="15dp"
  android:layout_marginEnd="5dp"
  android:layout_alignParentEnd="true"
  android:visibility="gone"
  android:indeterminateTint="@color/colorPrimary"
  android:id="@+id/progressBar"
  android:indeterminate="true" />
Run Code Online (Sandbox Code Playgroud)

我用它来显示和隐藏进度条:

progressBar.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

这正如我想要在较新的手机上工作一样,但在API 21和22上,进度条永远不可见.

java android

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

过滤嵌套对象

我收到一个看起来像这样的对象:

 this.tokensData = {
    O: {
        id: 0,
        name: value1,
        organization: organization1,
        ...,
       },
    1: {
        id: 1,
        name: value1,
        organization: organization1,
        ...,
        },
    2: {
        id: 2,
        name: value2,
        organization: organization2,
        ...,
        },
    ...
   }
Run Code Online (Sandbox Code Playgroud)

我想要筛选id和删除Objectid匹配的id我从接收store。到目前为止我尝试过的:

const filteredObject = Object.keys(this.tokensData).map((token) => {
  if (this.$store.state.id !== this.tokensData[token].id) {
    return this.tokensData[token];
  }
});
Run Code Online (Sandbox Code Playgroud)

这取代了Objectwith undefined- 这对我有用,但显然不理想。任何帮助深表感谢!

javascript object filter

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

如何仅在具有Express和Node的POST上添加中间件

我有一个中间件,我想只在http方法发布时应用.

以下工作正常,但我觉得有更好的方法:

'use strict'

const   express = require('express'),
        router = express.Router()


router.use((req, res, next) => {
    if (req.method === 'POST') {
        // do stuff
    }

    return next()
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情,但它不起作用:

'use strict'

const   express = require('express'),
        router = express.Router()


router.post((req, res, next) => {
    // do stuff

    return next()
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)

post router middleware node.js express

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

可靠的函数来获取Swift中字符串中子字符串的位置

这对英语很有用:

public static func posOf(needle: String, haystack: String) -> Int {
    return haystack.distance(from: haystack.startIndex, to: (haystack.range(of: needle)?.lowerBound)!)
}
Run Code Online (Sandbox Code Playgroud)

但对于外来字符,返回的值总是太小.例如,"का"被认为是一个单位而不是2个单位.

posOf(needle: "???", haystack: "?? ???? ?? ???? ????? ???? ??? ??? ???? ???") // 21
Run Code Online (Sandbox Code Playgroud)

我后来使用21在NSRange(location:length:)需要28的地方才能NSRange正常工作.

string encoding swift

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

preg_replace不适用于某些单词/字符

$str = '?? ?? ????? ?? ???? ??? ??? ???';
$str = preg_replace('/(?<=\b)?????(?=\b)/u', 'Musa', $str);
$str = preg_replace('/(?<=\b)???(?=\b)/u', 'suna', $str);
echo $str;
Run Code Online (Sandbox Code Playgroud)

这无法取代?????.它应该给予?? ?? Musa ?? ???? ??? suna ???,而是给予?? ?? ????? ?? ???? ??? suna ???.

这是发生了与结尾的所有单词?,像??????.它适用于单词?中间的单词(没有单词以a开头?).这是否意味着\b不适用??这是一个错误吗?

php regex encoding

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

Golang db.Query 与 sql join

我想查询 aquestion及其所有answers. 以下两个函数工作得很好。问题是我认为这应该在一个函数中完成,一个查询。(为简洁起见,我删除了错误检查)。

func QuestionById(id string) (*Question, error) {
    question := new(Question)
    _ = db.QueryRow("select * from question where question.id = ?", id).Scan(
        &question.Id,
        &question.LessonId,
        &question.Body,
        &question.Type,
    )

    return question, nil
}

func AnswersByQuestionId(id string) ([]*Answer, error) {
    rows, _ := db.Query("select * from answer where question_id = ?", id)
    defer rows.Close()

    answers := make([]*Answer, 0)

    for rows.Next() {
        answer := new(Answer)

        _ = rows.Scan(&answer.Id, &answer.Body, &answer.QuestionId, &answer.Correct)

        answers = append(answers, answer)
    }
    _ = rows.Err() …
Run Code Online (Sandbox Code Playgroud)

mysql join go

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

如何更改EditText的textSelectHandle颜色

Android有一个默认的绿色泪滴,显示在文本下方以帮助选择文本或位置.如何在没有@drawables 的情况下改变它的颜色?我尝试过, android:textSelectHandle="@color/colorPrimary"但只是让它消失了.

<EditText
  android:inputType="text"
  android:layout_width="fill_parent"
  android:layout_height="match_parent"
  android:layout_toEndOf="@+id/imgMagnifyingGlass"
  android:textAlignment="viewStart"
  android:backgroundTint="@color/colorWhite"
  android:textCursorDrawable="@null"
  android:textSelectHandle="@color/colorPrimary"
  android:textColor="@color/colorGray"
  android:id="@+id/editTextWord" />
Run Code Online (Sandbox Code Playgroud)

android

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