这是我收到的错误:"MissingSchemaError:尚未为模型"Business"注册架构."

我在用AstraDB矢量数据库.我做了一个函数来初始化Mongoose模型:

export const initMongooseBusinessModel = async () => {
    const Business = mongoose.model(
      "Business",
      new mongoose.Schema(
        {
          business_id: String,
          $vector: {
            type: [Number],
            validate: (vector) => vector && vector.length === 1536,
          },
        },
        {
          collectionOptions: {
            vector: {
              size: 1536,
              function: "cosine",
            },
          },
        },
      ),
    );
    await Business.init();
    console.log("complete")
};

我正try 在另一个文件的函数中使用该模型:

import mongoose from "mongoose"

export const addToAstraDB = async (url) => {
    try {
        const Business = mongoose.model("Business")
        const businessURL = url
        // Rest of the code goes here...

我收到了这个错误:

推荐答案

Val Karpov(Mongoose的创建者)最近发布了一篇关于建造RAG app using Mongoose and Astra DB for Vector Search的文章.事实上,查看Git repo behind Val's article,建议您创建一个名为Business.js的文件,如下所示:

'use strict';

const mongoose = require('../mongoose');

const businessSchema = new mongoose.Schema({
    business_id: String,
    $vector: [Number]
});

module.exports = mongoose.model('Business', businessSchema);

然后将其从您的其他文件中拉入,如下所示:

import mongoose from "mongoose"

export const addToAstraDB = async (url) => {
    try {
        const Business = require('./Business.js');
        const businessURL = url;
        // Rest of the code goes here...

尽管,在文章本身中,他似乎建议只在第二个(其他)文件中这样做:

const businessSchema = new mongoose.Schema({
    business_id: String,
    $vector: [Number]
});
const Business = mongoose.model('Business', businessSchema);

通读一下Val的articlerepo,这应该会给你指明正确的方向.

Node.js相关问答推荐

如何使用updateMany()和Node.js的方法?

如何在Node js中从MongoDB获取特定数据,使用GET方法?

我的位置也移动时左右拖动谷歌 map

为什么我的表单数据在我的POST请求中作为应用程序/json发送,为什么它返回错误请求错误?

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

如何在JavaScript中使用Mongoose将项推送到MongoDB中的重嵌套数组

一个大型的单个 Redis 实例可以处理所有事情,还是多个 Redis 实例?

如何创建具有不同对象类型的数组类型

在nodejs中为oauth请求创建和存储csrf令牌的最佳方法

我如何在 Raku 的供应中注册不同的事件?

每秒从套接字传来的数据有哪些存储方式?

在 Atlas 触发器(Node JS)中正确初始化 Firebase 管理 SDK

在新创建的 Angular 工作区上运行 ng lint 时出错

FirebaseCloudMessaging : PlatformException (PlatformException(null-error, Host platform returned null value for non-null return value., null, null))

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

如何更新 MongoDB 中对象数组中的键?

使用加密模块的流功能获取文件的哈希(即:没有 hash.update 和 hash.digest)

如何正确使用 package.json 中的关键字属性?

编写可维护的事件驱动代码

未在 Windows 8.1 上构建的 node 包 - 缺少 Microsoft.Cpp.Default.props