小编Gri*_*ork的帖子

如何替换 MongoDB 中的整个子文档数组?

这是我收藏中的一个示例文档:

Books
[
   id: 1,
   links:
   [
     {text: "ABC", "url": "www.abc.com"},
     {text: "XYZ", "url": "www.xyz.com"}
   ]
]
Run Code Online (Sandbox Code Playgroud)

我想在一次更新操作中替换 links 数组。以下是如何修改上述文档的示例:

Books
[
   id: 1,
   links:
   [
     {text: "XYZ", "url": "www.xyz.com"},
     {text: "efg", "url": "www.efg.com"},   <== NEW COPY OF THE ARRAY
     {text: "ijk", "url": "www.ijk.com"}
   ]
]
Run Code Online (Sandbox Code Playgroud)

如您所见,链接数组已被替换(删除旧数据,添加新数据)。

我很难用,Update.Set()因为它说它MyLinks<>不能映射到BsonValue

我尝试了许多不同的方法来实现这一目标,但都失败了,包括.PushAllWrapped<WebLinkRoot>("links", myDoc.WebLinks). 我尝试过的所有方法都会将新值附加到数组中,而不是替换数组。

由于 MongoDB 似乎没有提供一种简单的方法来替换子文档数组或类似的方法.ClearArray(),那么在单个查询中添加新元素之前确保清除数组的最佳方法是什么?

mongodb mongodb-query mongodb-.net-driver

10
推荐指数
2
解决办法
9618
查看次数

Chrome 上的 SSML 或 IPA TTS

我正在尝试制作一个应用程序(仅适用于我自己),可以正确地发音奇怪(幻想)的名字。我找到了 chrome 的 TTS api 和 W3C 的 SpeechSynthesis API,但是看起来 Chrome 在说出剩余的文本之前去除了所有 SSML 标签:

<?xml version="1.0"?>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
                   http://www.w3.org/TR/speech-synthesis/synthesis.xsd"
         xml:lang="en-US">
  <!-- Phoneme representation is cut short to exaggerate problem -->
  <phoneme alphabet="ipa" ph="t&#x259;mei&#x325;"> tomato </phoneme>
</speak>
Run Code Online (Sandbox Code Playgroud)

如何让 JSFiddle 中的 SSML 在 Chrome 中正确发音?

仅供参考,我正在运行 Windows,因此我无法使用特定于 mac 的发音标记。

提前致谢!

html javascript google-chrome text-to-speech speech-synthesis

5
推荐指数
0
解决办法
740
查看次数

显示在多个画布上共享资源的不同场景

我正在使用three.js创建一个交互式Web应用程序,而且我遇到了一个小绊脚石:

我在页面上的可拖动div中包含了许多画布.在每个画布中,我希望显示应用了不同材质的未点亮3D对象(每种材质都使用自定义着色器).所有这些材料都采用相同的纹理(一种可能是蓝色,一种可能是去饱和的,等等).

页面上的画布数量可能会有所不同,但我预计该数字通常会达到/超过20幅画布,因此共享资源(特别是对于大型纹理)将非常有用.

到目前为止,我一直在使用多个渲染器,相机和场景,这些都很好,直到我开始尝试在多个场景中使用相同的纹理.

大多数材料共享制服和属性以避免必须复制信息,并且还使得所有材料彼此保持同步(例如,当一些材料随时间改变时,它们应该以相同的方式改变).

我想知道是否有一种方法可以在场景/渲染器/画布之间共享纹理?当我尝试时,我收到以下错误:

WebGL: INVALID_OPERATION: bindTexture: object not from this context 
Run Code Online (Sandbox Code Playgroud)

在我试图找到这个问题的解决方案的研究中,我偶然发现这可以通过创建多个视口来解决,但是我不知道如何在不同的画布上显示不同的视口.

TL/DR;
Run Code Online (Sandbox Code Playgroud)

我可以:

  • 在不同的画布上展示相同的场景?
  • 在不同的场景,渲染器和/或画布上使用相同的制服(包括纹理制服)?

提前致谢!

Griffork

javascript google-chrome webgl three.js

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